nexcess

Turpentine - Varnish Cache

  • Popularity Score 11642 Popularity Score

    Popularity ScoreReferrals to Site/Downloads

    0 0 1+ 1+ 250+ 250+ 1000+ 1000+ 10000+ 10000+

  • Select Technology Partner
Simplify Varnish management and deployment with Magento.
Compatible with:
This extension is currently unavailable on Magento Connect. Please contact the developer.

You will be re-directed to the developer's website to complete your purchase.

You must be registered and logged in to get extension key.
In order to get this extension, you must be logged in to the Magento Community. Click here to login or register.

Magento Connect 2.0

Magento Connect 2.0

FREE
Previous Next
Overview

Turpentine - Varnish Cache

Nexcess.net Turpentine Extension for Magento

Turpentine is a full page cache extension for Magento that works with Varnish, a very fast caching reverse-proxy. By default, Varnish doesn't cache requests with cookies and Magento sends the frontend cookie with every request causing a (near) zero hit-rate for Varnish's cache. Turpentine configures Varnish to work with Magento and modifies Magento's behaviour to significantly improve the cache hit rate.

Note that while this extension is now considered stable, it is strongly recommended that it be tested on a development/staging site before deploying on a production site due to the potential need to add custom ESI policies for blocks added by other extensions.

Features

  • Full Page Caching, with hole-punching via Varnish ESI and/or AJAX, even for logged in visitors
  • Configurable via standard Magento methods (Admin system configuration and layout XML), no manual editing of Varnish config required for most cases
  • Able to generate and apply new Varnish VCLs (configurations) on the fly, without restarting/changing Varnish's config files or flushing the cache
  • Blacklist requests from caching by URL or parameters (SID, store, etc)
  • Configure cache TTL by URL and individual block's TTL
  • Supports multiple Varnish instances for clustered usage
  • Automatic cache clearing on actions (clearing product/catalog/cms page after saving)
  • Supports non-root Magento installs (i.e. putting Magento in /store/ instead of /) and multi-store/multi-site setups
  • Support for site-crawlers for cache warming, and includes a (basic) built-in site-crawler
  • SSL support through Pound or Nginx

Requirements

  • Magento Community Edition 1.6+ or Magento Enterprise Edition 1.11+
  • Varnish 2.1+ (including 4.0)

Installation & Usage

See the Installation and Usage pages.

Support

If you have an issue, please read the FAQ then if you still need help, open a bug report in GitHub's issue tracker.

Please do not use Magento Connect's Reviews or (especially) the Q&A for support, as it is not monitored as closely as github.

Contributing

If you have a fix or feature for Turpentine, submit a pull request through GitHub to the devel branch. The master branch is only for stable releases. Please make sure the new code follows the same style and conventions as already written code.

How it works

The extension works in two parts, page caching and block (ESI/AJAX) caching. A simplified look at how they work:

For pages, Varnish first checks whether the visitor sent a frontend cookie. If they didn't, then the request will be passed through to Magento in order generate a valid session. Note that the cookie checking is bypassed for clients identified as crawlers (see the Crawler IP Addresses and Crawler User Agents settings).

For blocks, the extension listens for the core_block_abstract_to_html_before event in Magento. When this event is triggered, the extension looks at the block attached to it and if an ESI policy has been defined for the block then the block's template is replaced with a simple ESI (or AJAX) template that tells Varnish to pull the block content from a separate URL. Varnish then does another request to that URL to get the content for that block, which can be cached separately from the page and may differ between different visitors/clients.

Notes and Caveats

  • Turpentine will not help (directly) with the speed of "actions" like adding things to the cart or checking out. It only caches, so it can only speed up page load speed for site browsing. It will remove a lot of load on the backend though so for heavily loaded sites it can free up enough backend resources to have a noticeable effect on "actions".
  • There are some technical limitations when using Varnish 2.1.x: External ESI requests are not blocked, and per-block TTLs in ESI policies are not honored (all blocks use the default TTL)
  • The core parts of Turpentine (caching and ESI/AJAX injection) work under Magento CE 1.5, but a significant portion of the auxillary functionality doesn't work due to changes to event names. That said, it would be possible to use Turpentine with Magento CE 1.5 with an understanding that it is not supported and what actions need to be taken manually. Both cache flushing (both automatic an manual) and cache warming (due to missing events that trigger the cache flushing) do not work.
  • Anonymous blocks are not able to be hole-punched. For CMS pages, it is recommended that you include the block in the page's layout updates XML and give it a name, then it can have an ESI policy like normal

Known Issues

  • Logging and statistics will show all requests as coming from the same IP address (usually localhost/127.0.0.1). It should be possible to work around this using Apache's mod_remoteip or mod_rpaf.

Demo

See the Demo Sites wiki page.

If you use Turpentine (on a production site), feel free to add your site to the list!

License

The code is licensed under GPLv2+, much of the ESI-specific code is taken from Hugues Alary's Magento-Varnish extension, which is licensed as GPLv3.

M1 Extension Versions

RELEASE-0.7.1

2016-11-18 11:39:56
  • Version number: 0.7.1
  • Stability: Stable
  • Compatibility: 1.8, 1.8.1, 1.9, 1.9.1, 1.9.2, 1.13.1, 1.14, 1.14.1, 1.14.2
You must be registered and logged in to get extension key.

Magento Connect 2.0

Magento Connect 2.0

Change Log

RELEASE-0.0.4

  • Initial Magento Connect release

RELEASE-0.0.5

  • Add new VCL backend for Magento admin with longer timeout values

RELEASE-0.0.6

  • Make backend timeouts and grace period configurable
  • Initial Magento Enterprise Edition compatible release on Magento Connect
  • Improve cache hit-rate in some cases

RELEASE-0.1.0

  • Hole-punching support via ESI
  • Crawler support for cache warming
  • Most issues with Varnish socket communication will display flash errors
    instead of throwing exceptions
  • Many/most configuration options were changed or renamed

RELEASE-0.1.1

  • Fixed EE ESI template and layout install location
  • Fix missing files in previous Magento Connect package

RELEASE-0.1.2

  • Disable ESI injection if request does not come through Varnish to prevent
    broken output for SSL-enabled sites

RELEASE-0.1.3

  • Fix ESI block rendering to be more accurate. This fixes the issue where some
    blocks didn't render exactly right (missing links in the header block)

RELEASE-0.1.4

  • Added ESI block flushing on customer login/logout
  • Fixed syntax error under PHP 5.2
  • Added syntax check to build script
  • Made footer block global ESI cached by default
  • Removed Varnish Management admin page<ul>
  • VCL is now saved and applied on Varnish Options and Caching Options config
    saving
  • Cache clearing is now integrated into Cache Management page like other Magento
    cache types
  • Cache clearing by URL and content-type have been removed since they were
    not very useful in light of automatic cache clearing
</li>
</ul>

RELEASE-0.1.5

  • Fix VCL application and saving when the Magento compiler is enabled
  • Remove defunct debug option config dependancies
  • Added right.poll block to default ESI cache policy
  • Fix occasional "ESI processing not enabled" message (double ESI-include)
  • Fix Varnish Pages refresh not flushing Varnish cache

RELEASE-0.1.6

  • Add support for identifing crawlers by User-Agent in addition to IP address,
    see the new Crawler User Agents setting (matches Googlebot, siege, ab, and
    MageSpeedTest.com by default)
  • Fix stale Login/Logout links
  • Add documentation for SSL Support

RELEASE-0.2.0

  • Added AJAX injection for very short lived and/or frequently changed blocks
    (like the flash messages). This should resolve the issue with flash messages
    not displaying or displaying sporadically. To enable for other blocks, change
    the setEsiOptions method in the turpentine_esi.xml layout file to
    setAjaxOptions. Note that AJAX injected blocks are not cached at all
  • Added TTL extension for cache hits. Cached object's TTL will be extended by a
    small amount on cache hits to keep frequently used cache objects from expiring
    (unless the cache is flushed), allowing for lower TTL values to keep the cache
    from filling.
  • Prevented ESI injected blocks from being cached via Magento's block html
    caching while still allowing full block output to be cached. This is an
    improvement on the fix in RELEASE-0.1.5 for double ESI-includes
  • Fixed Magento using the ESI getBlock URL as the previously visited URL for
    visitor sessions
  • Fixed ESI injected blocks using the ESI getBlock URL as the current URL
    when rendering
  • Reduced size of generated VCL to reduce chance of hitting CLI buffer limit

RELEASE-0.2.1

  • Changed the syntax for dummy blocks and registry keys in the setAjaxOptions
    and setEsiOptions layout methods, see the wiki for the new syntax
  • Improved serialization of registry items in ESI/AJAX blocks
  • Fixed AJAX requests always being over HTTPS even if the main page was
    requested over HTTP
  • Changed the dummy URL to "/checkout/cart" instead of "/"
  • Fixed AJAX injection for messages block, which didn't use the standard
    layout method for block definitions. This also includes a new option to
    "Fix Flash Messages" which allows for disabling the new behavior for compatiblity
    with other AJAX extensions
  • Fixed POST request caching, which sometimes caused POST requests to fail the
    first time, and then succeed (bug introduced in RELEASE-0.2.0)
  • Fixed CE 1.6 + EE 1.11 incompatibility introduced in RELEASE-0.2.0

RELEASE-0.3.0

The new site crawler functionality in this release adds a new User-Agent to the
default Crawler User Agents setting: "Nexcessnet_Turpentine/."
It is strongly recommended to manually add this new user agent string to the
Crawler User Agents* setting after upgrading as Magento won't automatically
update the config setting with the new default value if the config has been
saved before.
This does not apply to new installs.

  • Added built-in crawler for automatically warming the cache. Also automatically
    warms pages that are flushed on save (product/category/CMS pages)
  • Removed hard-coded "messages" block AJAX options, the ESI/AJAX options for
    the "messages" block can now be configured in the ESI layout file like any
    other block
  • Made ESI client-cache ban (clear) events configurable. See the new "ESI
    Client Cache Purge Events" option
  • Enabling the Normalize User-Agent setting now also differentiates between
    desktop and mobile browsers, for caching different output for desktop and mobile
    browsers
  • Fixed messages block not correctly updating the layout if the layout cache
    was enabled
  • AJAX loaded blocks now (quickly) fade in instead of popping in
  • Enabled continuous-integration builds for PHP 5.2, 5.3, and 5.4 through
    Travis-CI. This is only
    relevant to developers and has no effect on users of the extension

RELEASE-0.3.1

  • Fixed generated VCL to work with multi-store/multi-site setups with different
    URL paths

RELEASE-0.3.2

  • Fixed Turpentine not correctly detecting and disabling ESI/AJAX on requests
    with HTTP Authorization
  • Fixed some requests being passed through Varnish instead of piped resulting
    in incorrect handling of response output
  • Removed cached object TTL extension (added in RELEASE-0.2.0) due to issues
    with cached object contention at high load
  • Improved warm-cache.sh script to handle different platforms better and
    take advantage of multiple processors/cores
  • Added advanced session validation. Varnish will now respect the Magento settings
    for validating the User-Agent, X-Forwarded-For, and Via headers, and the remote
    IP address with respect to sessions (under System > Configuration > General >
    Web > Session Validation Settings).

RELEASE-0.4.0

There are changes to the ESI layout syntax in this release, any customizations
that have been done to the ESI layout will need to be updated

  • Improved serialization of ESI/AJAX data in URLs. ESI/AJAX URLs should now be
    50-75% as long as they previously were
  • Fixed rare cases of invalid characters in ESI/AJAX URLs, which would cause
    the block to not load or display an error message
  • Unified AJAX and ESI code paths. ESI and AJAX includes no longer use
    duplicated code which will make it easier to add other other inclusion methods
    in the future and reduces the potential for bugs
  • Selecting between AJAX and ESI inclusion is now done with the method
    parameter to setEsiOptions, setAjaxOptions is no longer supported
  • Added ability to cache AJAX requests
  • The old cacheType parameter for setEsiOptions in the layout has been
    split into two new options: scope and access<ul>
  • scope = global: the cached object valid for the entire site
  • scope = page: the cached object is specific to a single page
  • access = public: the cached object is valid for any visitor
  • access = private: the cached object is valid for a single visitor's session
</li>
  • ESI block default TTL options have been removed. The new default for public
    ESI blocks is the same as the Varnish page TTL and private blocks use the
    session cookie lifetime as the TTL
  • Turpentine will now detect if there is a difference between how a block
    should be loaded vs how it is requested (ex. manually changing the method
    parameter for a AJAX block to ESI). If ESI debugging is turned off an error
    (403) will be returned
  • Client-side caching will now be used for static assets, in addition to
    Varnish's regular caching (via the Cache-Control header)
  • Improved page rendering performance. Pages that include ESI blocks will now
    render significantly faster (up to 50% in testing), dependant on how many
    ESI block includes were on the page
  • Fixed Turpentine ESI request entries in the Magento visitor log. This should
    result in a small speed-up for AJAX requests particularly as most of the time
    token for the request was spent doing the logging
  • Added custom VCL inclusion. Custom logic can be added to the VCL Turpentine
    generates by putting it in
    app/code/community/Nexcessnet/Turpentine/misc/custom_include.vcl. If this
    file is found, Turpentine will automatically include it. Note that it is not
    Varnish version-specific like the other templates, users will need to make sure
    the VCL code used is compatible with the version of Varnish that they use
  • </ul>

    RELEASE-0.5.0

    There are changes to the ESI layout syntax (again) in this release, any
    customizations that have been done to the ESI layout or added for custom blocks
    will need to be updated and moved to the local.xml file. Additionally, the
    Varnish cache will need to be fully flushed or cached pages that reference
    previously cached ESI blocks will not load those blocks

    • Added support for event-based partial ESI cache flushing. ESI blocks will
      now only be flushed on the events specified for them in the layout rather than
      all of a client's ESI blocks being flushed on any event that triggered a flush
    • Removed the purge_events option as it was no longer needed with the new
      partial ESI flushing support
    • Removed the need for initial request pass through, Varnish will now generate
      a session token for new visitors and serve them pages from the cache on their
      first visit
    • Fixed CMS pages not being automatically flushed on update
    • Fixed piped requests in Varnish not having headers handled appropriately
    • Added ability to whitelist IP addresses for debug info from Varnish, even
      if Varnish debugging is disabled via Magento's developer IP setting
    • Added flushing on a product page, product review list, and individual review
      view on review saving (such as changing from 'Pending' to 'Approved')
    • Combined the Varnish and ESI debug options
    • Made the logging done by the extension consistent, all messages logged by
      Turpentine will be prefixed with TURPENTINE:
    • Added HMAC signing to the encrypted ESI data to prevent possible
      tampering with the ESI data in the request
    • The turpentine_esi_custom.xml file that was previously suggested to be
      used for custom ESI policies has been removed in favor of Magento's built-in
      facility for this (local.xml). Any ESI policies defined in turpentine_esi_custom.xml
      should be moved the local.xml file in the theme's layout directory to
      prevent issues with the order of defining blocks and setting ESI policies on
      them.

    RELEASE-0.5.1

    This is the first release of Turpentine marked "stable" in Magento Connect

    • Fix PHP error when Block Logging is turned on
    • Saving a child product of a configurable or grouped product will now also
      cause the parent product(s) to be flushed. This makes saving consistent with
      the out-of-stock flushing behaviour
    • Varnish will now properly distinguish between HTTP and HTTPS responses. This
      should fix warnings in some browsers about mixing secure and insecure content
      when using Varnish+Turpentine behind an SSL proxy

    RELEASE-0.5.2

    • Added profiling calls for more debugging and performance-profiling options
    • Fixed layout XML caching logic to prevent writing to the cache on every
      page load, this should result in a small performance improvement on
      Varnish cache misses
    • Fixed multiple frontend cookies being generated when Magento was installed
      in the root of a domain (/)
    • Added support for translating the SID URL param into the frontend cookie
      for sharing sessions across different domains
    • Added utility script to dump Varnish's active VCL (util/dump-active-vcl.sh)
      for debugging
    • Improve ESI URL redirect interception, Turpentine should now prefer to
      redirect to the referring URL instead of defaulting to /checkout/cart/ all
      the time
    • Re-enabled visitor logging for ESI/AJAX requests, this fixes product
      comparison for non-logged-in visitors

    RELEASE-0.5.3

    • Added runtime model/helper/block rewriting. This negates the need to comment
      out the core/messages block rewrite to really disable the flash messages
      fix when using Turpentine in combination with certain other extensions
    • Add run-time detection of Varnish cli_buffer param to allow for longer VCLs
      after increasing the limit at Varnish start up
    • Added the new Fix Product List Toolbar option (under Varnish Options >
      General) to prevent caching of the products-per-page and product sorting options
      in the product list toolbar. Note that this option defaults to Disabled
    • Added the store and currency cookies to the request hash. This allows
      Varnish to differentiate between multiple stores with the same base URL and
      fixes currency handling.
    • Added a new option to disable the automatic application of the new VCL when
      making changes to the Varnish Options or Caching Options config sections
    • The Flush Catalog Images Cache and Flush JavaScript/CSS Cache no longer
      also flush the corresponding URLs in Varnish. This helps prevent broken images
      and script links after using those buttons.
    • Fixed Varnish ESI parsing failures that some users were experienced. This
      should prevent the "ESI processing not enabled" seen on some blocks
    • Removed the default ESI policy on the checkout.cart block as it was
      causing the shipping and tax quoting to not update correctly. It will be
      re-added in a future release once the quote issue is resolved
    • Added a X-Turpentine-Block header to ESI/AJAX responses containing the
      name of the block rendered
    • Disabled caching of the product comparison popup in the default ESI policy.
      This does not affect the product comparison block, only the popup window
      showing the actual comparison

    RELEASE-0.5.4

    • Fixed the Varnish-generated frontend cookie occasionally being set with
      the wrong path when Magento was located in a subdirectory instead of the
      root of the site
    • The built-in crawler should no longer try to crawl products that are not
      visible in the frontend
    • Missing blocks caused by layout changes between different handles should be
      handled more gracefully by Turpentine now
    • Parent products will also be banned when a child product goes out of stock
      or is saved
    • Fixed CMS URL generation for the built-in crawler
    • Fixed product stock change check to actually work
    • Improved the dummy request mock up. It should have all expected fields
      populated now and changes to it will not affect the global state or original
      request
    • Added a Magento shell script (util/varnishadm.php) that can be used like
      the real varnishadm command for users who aren't able to use real
      varnishadm command
    • Fixed duplicate flash messages experienced in some cases (thanks to
      @craigcarnell)
    • Made the custom_include.vcl file's location configurable, see the new
      Custom VCL File Location option
    • Added template parsing to the custom include VCL file, {{variable}}
      replacement will now also work in this file
    • Added a toggle-able Varnish Bypass to Cache Management page for bypassing
      the cache (including ESI) for a single admin session (thanks to @alexandre-jardin)
    • Varnish will now strip the Google-related parameters from the request to
      increase cache hit-rate

    RELEASE-0.5.5

    • Made VCL templates slightly shorter to help with running into the inline
      VCL character limit
    • The warm-cache.sh script now respects the PROC environment variable for
      the number of processes to use while warming the cache
    • [#253] Fixed VCL to correctly identify Chrome on OS X
    • [#281] Fixed unintentional flushing of full cache in some cases (thanks
      @jeroenvermeulen)
    • [#301] Fixed IE caching AJAX ESI includes (thanks @nickbock)
    • [#320] AJAX ESI should be compatible with themes that use jQuery instead of
      Prototype (thanks @steverice)
    • [#334] Bad URIs that cause the dummy request creation to throw an exception
      will now log the bad URI and hide the exception when debugging is disabled
      (thanks @ajardin)
    • [#337] Improve layout handle searching for ESI blocks in some cases (thanks
      @sanbornm)
    • [#356] Fix ESI blocks not rendering child blocks (thanks @magedev)
    • Changed Varnish-generated session ID format for compatibility with the
      SFC_Kount extension
    • Failures during advanced registry loading in ESI requests should be handled
      more gracefully

    RELEASE-0.6.0

    This release requires a small addition to Varnish's configuration when used with
    Magento CE 1.8+ or EE 1.13+, see these instructions

    • [#362] Fixed ESI detection for message block (thanks @eth8505)
    • [#380] Fixed ESI cache flushes not firing in some cases (thanks @gabrielsomoza)
    • [#391] Added Magento Composer Installer support (thanks @ajardin)
    • [#405] Fixed disabling Varnish bypass (thanks @ajardin)
    • [#438] Implemented ban lurker-friendly bans (thanks @jeroenvermeulen)
    • [#443] Fixed caching of static assets when the Add Store Code to Urls option
      is enabled (thanks @jeroenvermeulen)
    • [#345] Fixed compatibility with Magento CE 1.8 and EE 1.13

    RELEASE-0.6.1

    • [#471] Fixed addMessage() in messages block (@arosenhagen)
    • [#445] Update Cron.php for compatibility with MageWorx_XSitemap (@evensisftw)
    • [#474] Add ESI decoder utility (@jeroenvermeulen)
    • [#485] Trigger layout events when rendering ESI blocks (@eth8505)
    • [#490] Fix missing ESI blocks when they are defined in a reference instead
      of a block (@paales)
    • [#472] Added ESI parameter for caching flash message
      blocks (@jeroenvermeulen)
    • [#494] Added option to control the stripping of whitespace from generated
      VCLs (@eth8505)
    • [#549] Enabling the fix_product_toolbar option now clears previously set
      view preferences (@jeroenvermeulen)
    • [#529] Added decoding of the referrer to the ESI decoder
      utility (@jeroenvermeulen)
    • [#536] Allow // (double slash) comments in VCL files and strip them when
      trimming whitespace (@eth8505)

    RELEASE-0.6.2

    • [#635] Fixed typos (@pborelli)
    • [#668] Replace short open tag (@XnS)
    • [#721] Fix license according to SPDX (@ihor-sviziev)
    • [#740] Do not return pipe for OPTIONS straight away (@ashsmith)
    • [#598] Ensure POST request gets normalized data (@melvyn-sopacua)
    • [#739] Ban CMS Page after a CMS Revision has been updated (@ashsmith)
    • Added fix for community poll problems
    • [#516] Fixes multiple sessions generated on first page visit (@jharrisonau)
    • [#796] Ignore additional GET Parameters in Varnish Cache via Configuration (@thampe)
    • [#626] Fix for dummy blocks not working (@jeroenvermeulen)
    • [#719) Replace connect20/nexcessnet_turpentine package in composer.json (@ihor-sviziev)

    RELEASE-0.6.3

    • [#499] Use rewrite instead of local Session model for form key handling (@eth8505)
    • [#817] Damian/cache management extended. Added validations for EE and Full Page cache (@damian-pastorini)
    • [#521] Fix for search input field on search results page (@jeroenvermeulen)
    • Fix for recently viewed products block in CE 1.9.1 (Issue #801)
    • [#522] Custom log file (issue #510) (@eth8505)
    • [#836] Add OS X .DS_Store and nbproject to gitignore (@cbb7123)
    • [#832] Fixed duplicated frontend cookie bug (@mabigo)
    • [#527] Feature/admin clear specific page (@craigcarnell)
    • [#838] Added customer_group access option to cache based on customer group (@pejoo)
    • [#825] Fix messages returning a empty "ul" (@BarryCarlyon)
    • [#826] Tweak logging for empty getNameInLayout (@BarryCarlyon)
    • [#843] Check if path isset before using it (@craigcarnell)
    • Removed session generation code in VCL - see issue #345
    • [#586] Updated debug helper (@magedev)
    • [#848] Replace Nexcessnet_Turpentine_Model_Dummy_Request with Magento model (@craigcarnell)
    • [#849] escape | character (@craigcarnell)
    • Better escaping of double slashes in urls (for better hitrate) (@joolswills)
    • [#860] Removing ref to nonexistent file from modman (@cgrice )
    • [#596] update docs to make an important notice on Crawler IP Addresses setting under Caching Options (@arosenhagen)
    • [#878] Explicit cache bypass for progress sections (@astorm)
    • [#844] Fix for HTTPS ESI URLs (@jeroenvermeulen)
    • [#865] Implemented load balancing support (@jeroenvermeulen)

    RELEASE-0.6.5

    • Varnish 4 (@aheadley @aricwatson)

    RELEASE-0.6.6

    • [#923] DetermineVersion 3.0 to 3.0.3 bugfix (@timmuller)
    • [#945] Send unmodified url to the backend server (@thampe)
    • [#885] Add maintenance mode that will allow debug_ips through to visit the site, all other users get the landing page (@craigcarnell)
    • [#955] Include theme specific handles to ESI data (@LyndonHook)
    • [#972] Fixed bug with wrong return value of ->getSkinUrl() (@ceckoslab)

    RELEASE-0.6.7

    • [#951] Added 'disableEsiInjection' ESI policy option.
    • [#1005] Invalidating cms pages with url enging with slash. (@sivaschenko)
    • [#1020] Add the form key to wishlist submit to prevent 403 errors. (@paulpartington)
    • [#1036] Prime Checkout and Light Checkout Compatibility. (@sprankhub)
    • [#1050] Use Simple Hash" option for static files. (@jeroenvermeulen)
    • [#1031] Improved helper function getModelName(). (@jeroenvermeulen)
    • [#1066] Fix for crawler lock problem with CM_RedisSession. (@jeroenvermeulen)

    RELEASE-0.6.8

    • [#1065] Added ESI policy for cookie notice block. (@aricwatson)
    • [#1066] Fix for crawler lock problem with CM_RedisSession (@jeroenvermeulen )
    • [#1072] Scrutinizer Auto-Fixes. (@miguelbalparda)
    • [#1078] Fix regex check - blank value passed check. (@aricwatson)
    • [#1087] Fixed missing '}' typo #1087. (@aricwatson)
    • [#1117] Fix #1100. (@GLips)
    • [#1155] Update TECHNICAL_NOTES.md. (@GLips)

    RELEASE-0.6.9 -> 0.7.0

    • [#1162] Support PHP7. (@allardhoeve)
    • [#1173] Fix load balancing for Varnish 4. (@kleinmann)
    • [#1182] Update version-3.vcl normalisation. (@gewaechshaus)

    RELEASE-0.7.1

    • [#1189] Custom Admin Path with Add Store Code to URLs (@miguelbalparda)
    • [#1195] Fix for issue #1093 - poll still displaying when module output disabled (@aricwatson)
    • [#1212] Allows Custom VCL template (@aricwatson)
    • [#1214] Generate global blocks like formkey for ESI-Blocks (@possi)
    • [#1216] Adds and implements an option to log all commands sent to Varnish (@aricwatson)
    • [#1225] Enhanced block logging (@aricwatson)
    • [#1226] Condensed the UA "buckets" down to just "mobile" and "other" (@aricwatson)
    • [#1232] Adds better logging of hash_data calls in vcl_hash (@aricwatson)
    • [#1243] Adds more flexibility/options to warm-cache.sh (@aricwatson)
    • [#1254] Add customer_group caching to varnish 4 template feature (@jg-development)
    • [#1258] Fix issue with customer name not being removed from header when clearing persistent cookie (@careysizer)
    • [#1261] Fixed Crawler UserAgent regexp to match newer Siege versions. (@jeroenvermeulen)
    • [#1262] Bugfix in "Normalize Encoding" for visitors who accept "*" (@jeroenvermeulen)
    • [#1264] #963 Fix the Nginx 403 issue with urls which are starting with a dot (@andreasemer)
    • [#1266] #878 Add onepage checkout progress review for varnish exclude in config (@jg-development)
    • [#1271] #1270 Fix: Improve condition to support safari browser Event feature (@AlexanderPok)
    • [#1282] Added one more format for configuration regexp bug (@odi-um)
    • [#1289] Fix the issue when redirect HTTP to HTTPS feature (@hmphu)
    • [#1298] Removed unused code (@nickua)

    RELEASE-0.7.0

    2016-05-31 13:55:00
    • Version number: 0.7.0
    • Stability: Stable
    • Compatibility: 1.8, 1.8.1, 1.9, 1.9.1, 1.9.2
    You must be registered and logged in to get extension key.

    Magento Connect 2.0

    Magento Connect 2.0

    Change Log

    RELEASE-0.0.4

    • Initial Magento Connect release

    RELEASE-0.0.5

    • Add new VCL backend for Magento admin with longer timeout values

    RELEASE-0.0.6

    • Make backend timeouts and grace period configurable
    • Initial Magento Enterprise Edition compatible release on Magento Connect
    • Improve cache hit-rate in some cases

    RELEASE-0.1.0

    • Hole-punching support via ESI
    • Crawler support for cache warming
    • Most issues with Varnish socket communication will display flash errors
      instead of throwing exceptions
    • Many/most configuration options were changed or renamed

    RELEASE-0.1.1

    • Fixed EE ESI template and layout install location
    • Fix missing files in previous Magento Connect package

    RELEASE-0.1.2

    • Disable ESI injection if request does not come through Varnish to prevent
      broken output for SSL-enabled sites

    RELEASE-0.1.3

    • Fix ESI block rendering to be more accurate. This fixes the issue where some
      blocks didn't render exactly right (missing links in the header block)

    RELEASE-0.1.4

    • Added ESI block flushing on customer login/logout
    • Fixed syntax error under PHP 5.2
    • Added syntax check to build script
    • Made footer block global ESI cached by default
    • Removed Varnish Management admin page<ul>
    • VCL is now saved and applied on Varnish Options and Caching Options config
      saving
    • Cache clearing is now integrated into Cache Management page like other Magento
      cache types
    • Cache clearing by URL and content-type have been removed since they were
      not very useful in light of automatic cache clearing
    </li>
    </ul>

    RELEASE-0.1.5

    • Fix VCL application and saving when the Magento compiler is enabled
    • Remove defunct debug option config dependancies
    • Added right.poll block to default ESI cache policy
    • Fix occasional "ESI processing not enabled" message (double ESI-include)
    • Fix Varnish Pages refresh not flushing Varnish cache

    RELEASE-0.1.6

    • Add support for identifing crawlers by User-Agent in addition to IP address,
      see the new Crawler User Agents setting (matches Googlebot, siege, ab, and
      MageSpeedTest.com by default)
    • Fix stale Login/Logout links
    • Add documentation for SSL Support

    RELEASE-0.2.0

    • Added AJAX injection for very short lived and/or frequently changed blocks
      (like the flash messages). This should resolve the issue with flash messages
      not displaying or displaying sporadically. To enable for other blocks, change
      the setEsiOptions method in the turpentine_esi.xml layout file to
      setAjaxOptions. Note that AJAX injected blocks are not cached at all
    • Added TTL extension for cache hits. Cached object's TTL will be extended by a
      small amount on cache hits to keep frequently used cache objects from expiring
      (unless the cache is flushed), allowing for lower TTL values to keep the cache
      from filling.
    • Prevented ESI injected blocks from being cached via Magento's block html
      caching while still allowing full block output to be cached. This is an
      improvement on the fix in RELEASE-0.1.5 for double ESI-includes
    • Fixed Magento using the ESI getBlock URL as the previously visited URL for
      visitor sessions
    • Fixed ESI injected blocks using the ESI getBlock URL as the current URL
      when rendering
    • Reduced size of generated VCL to reduce chance of hitting CLI buffer limit

    RELEASE-0.2.1

    • Changed the syntax for dummy blocks and registry keys in the setAjaxOptions
      and setEsiOptions layout methods, see the wiki for the new syntax
    • Improved serialization of registry items in ESI/AJAX blocks
    • Fixed AJAX requests always being over HTTPS even if the main page was
      requested over HTTP
    • Changed the dummy URL to "/checkout/cart" instead of "/"
    • Fixed AJAX injection for messages block, which didn't use the standard
      layout method for block definitions. This also includes a new option to
      "Fix Flash Messages" which allows for disabling the new behavior for compatiblity
      with other AJAX extensions
    • Fixed POST request caching, which sometimes caused POST requests to fail the
      first time, and then succeed (bug introduced in RELEASE-0.2.0)
    • Fixed CE 1.6 + EE 1.11 incompatibility introduced in RELEASE-0.2.0

    RELEASE-0.3.0

    The new site crawler functionality in this release adds a new User-Agent to the
    default Crawler User Agents setting: "Nexcessnet_Turpentine/."
    It is strongly recommended to manually add this new user agent string to the
    Crawler User Agents* setting after upgrading as Magento won't automatically
    update the config setting with the new default value if the config has been
    saved before.
    This does not apply to new installs.

    • Added built-in crawler for automatically warming the cache. Also automatically
      warms pages that are flushed on save (product/category/CMS pages)
    • Removed hard-coded "messages" block AJAX options, the ESI/AJAX options for
      the "messages" block can now be configured in the ESI layout file like any
      other block
    • Made ESI client-cache ban (clear) events configurable. See the new "ESI
      Client Cache Purge Events" option
    • Enabling the Normalize User-Agent setting now also differentiates between
      desktop and mobile browsers, for caching different output for desktop and mobile
      browsers
    • Fixed messages block not correctly updating the layout if the layout cache
      was enabled
    • AJAX loaded blocks now (quickly) fade in instead of popping in
    • Enabled continuous-integration builds for PHP 5.2, 5.3, and 5.4 through
      Travis-CI. This is only
      relevant to developers and has no effect on users of the extension

    RELEASE-0.3.1

    • Fixed generated VCL to work with multi-store/multi-site setups with different
      URL paths

    RELEASE-0.3.2

    • Fixed Turpentine not correctly detecting and disabling ESI/AJAX on requests
      with HTTP Authorization
    • Fixed some requests being passed through Varnish instead of piped resulting
      in incorrect handling of response output
    • Removed cached object TTL extension (added in RELEASE-0.2.0) due to issues
      with cached object contention at high load
    • Improved warm-cache.sh script to handle different platforms better and
      take advantage of multiple processors/cores
    • Added advanced session validation. Varnish will now respect the Magento settings
      for validating the User-Agent, X-Forwarded-For, and Via headers, and the remote
      IP address with respect to sessions (under System > Configuration > General >
      Web > Session Validation Settings).

    RELEASE-0.4.0

    There are changes to the ESI layout syntax in this release, any customizations
    that have been done to the ESI layout will need to be updated

    • Improved serialization of ESI/AJAX data in URLs. ESI/AJAX URLs should now be
      50-75% as long as they previously were
    • Fixed rare cases of invalid characters in ESI/AJAX URLs, which would cause
      the block to not load or display an error message
    • Unified AJAX and ESI code paths. ESI and AJAX includes no longer use
      duplicated code which will make it easier to add other other inclusion methods
      in the future and reduces the potential for bugs
    • Selecting between AJAX and ESI inclusion is now done with the method
      parameter to setEsiOptions, setAjaxOptions is no longer supported
    • Added ability to cache AJAX requests
    • The old cacheType parameter for setEsiOptions in the layout has been
      split into two new options: scope and access<ul>
    • scope = global: the cached object valid for the entire site
    • scope = page: the cached object is specific to a single page
    • access = public: the cached object is valid for any visitor
    • access = private: the cached object is valid for a single visitor's session
    </li>
  • ESI block default TTL options have been removed. The new default for public
    ESI blocks is the same as the Varnish page TTL and private blocks use the
    session cookie lifetime as the TTL
  • Turpentine will now detect if there is a difference between how a block
    should be loaded vs how it is requested (ex. manually changing the method
    parameter for a AJAX block to ESI). If ESI debugging is turned off an error
    (403) will be returned
  • Client-side caching will now be used for static assets, in addition to
    Varnish's regular caching (via the Cache-Control header)
  • Improved page rendering performance. Pages that include ESI blocks will now
    render significantly faster (up to 50% in testing), dependant on how many
    ESI block includes were on the page
  • Fixed Turpentine ESI request entries in the Magento visitor log. This should
    result in a small speed-up for AJAX requests particularly as most of the time
    token for the request was spent doing the logging
  • Added custom VCL inclusion. Custom logic can be added to the VCL Turpentine
    generates by putting it in
    app/code/community/Nexcessnet/Turpentine/misc/custom_include.vcl. If this
    file is found, Turpentine will automatically include it. Note that it is not
    Varnish version-specific like the other templates, users will need to make sure
    the VCL code used is compatible with the version of Varnish that they use
  • </ul>

    RELEASE-0.5.0

    There are changes to the ESI layout syntax (again) in this release, any
    customizations that have been done to the ESI layout or added for custom blocks
    will need to be updated and moved to the local.xml file. Additionally, the
    Varnish cache will need to be fully flushed or cached pages that reference
    previously cached ESI blocks will not load those blocks

    • Added support for event-based partial ESI cache flushing. ESI blocks will
      now only be flushed on the events specified for them in the layout rather than
      all of a client's ESI blocks being flushed on any event that triggered a flush
    • Removed the purge_events option as it was no longer needed with the new
      partial ESI flushing support
    • Removed the need for initial request pass through, Varnish will now generate
      a session token for new visitors and serve them pages from the cache on their
      first visit
    • Fixed CMS pages not being automatically flushed on update
    • Fixed piped requests in Varnish not having headers handled appropriately
    • Added ability to whitelist IP addresses for debug info from Varnish, even
      if Varnish debugging is disabled via Magento's developer IP setting
    • Added flushing on a product page, product review list, and individual review
      view on review saving (such as changing from 'Pending' to 'Approved')
    • Combined the Varnish and ESI debug options
    • Made the logging done by the extension consistent, all messages logged by
      Turpentine will be prefixed with TURPENTINE:
    • Added HMAC signing to the encrypted ESI data to prevent possible
      tampering with the ESI data in the request
    • The turpentine_esi_custom.xml file that was previously suggested to be
      used for custom ESI policies has been removed in favor of Magento's built-in
      facility for this (local.xml). Any ESI policies defined in turpentine_esi_custom.xml
      should be moved the local.xml file in the theme's layout directory to
      prevent issues with the order of defining blocks and setting ESI policies on
      them.

    RELEASE-0.5.1

    This is the first release of Turpentine marked "stable" in Magento Connect

    • Fix PHP error when Block Logging is turned on
    • Saving a child product of a configurable or grouped product will now also
      cause the parent product(s) to be flushed. This makes saving consistent with
      the out-of-stock flushing behaviour
    • Varnish will now properly distinguish between HTTP and HTTPS responses. This
      should fix warnings in some browsers about mixing secure and insecure content
      when using Varnish+Turpentine behind an SSL proxy

    RELEASE-0.5.2

    • Added profiling calls for more debugging and performance-profiling options
    • Fixed layout XML caching logic to prevent writing to the cache on every
      page load, this should result in a small performance improvement on
      Varnish cache misses
    • Fixed multiple frontend cookies being generated when Magento was installed
      in the root of a domain (/)
    • Added support for translating the SID URL param into the frontend cookie
      for sharing sessions across different domains
    • Added utility script to dump Varnish's active VCL (util/dump-active-vcl.sh)
      for debugging
    • Improve ESI URL redirect interception, Turpentine should now prefer to
      redirect to the referring URL instead of defaulting to /checkout/cart/ all
      the time
    • Re-enabled visitor logging for ESI/AJAX requests, this fixes product
      comparison for non-logged-in visitors

    RELEASE-0.5.3

    • Added runtime model/helper/block rewriting. This negates the need to comment
      out the core/messages block rewrite to really disable the flash messages
      fix when using Turpentine in combination with certain other extensions
    • Add run-time detection of Varnish cli_buffer param to allow for longer VCLs
      after increasing the limit at Varnish start up
    • Added the new Fix Product List Toolbar option (under Varnish Options >
      General) to prevent caching of the products-per-page and product sorting options
      in the product list toolbar. Note that this option defaults to Disabled
    • Added the store and currency cookies to the request hash. This allows
      Varnish to differentiate between multiple stores with the same base URL and
      fixes currency handling.
    • Added a new option to disable the automatic application of the new VCL when
      making changes to the Varnish Options or Caching Options config sections
    • The Flush Catalog Images Cache and Flush JavaScript/CSS Cache no longer
      also flush the corresponding URLs in Varnish. This helps prevent broken images
      and script links after using those buttons.
    • Fixed Varnish ESI parsing failures that some users were experienced. This
      should prevent the "ESI processing not enabled" seen on some blocks
    • Removed the default ESI policy on the checkout.cart block as it was
      causing the shipping and tax quoting to not update correctly. It will be
      re-added in a future release once the quote issue is resolved
    • Added a X-Turpentine-Block header to ESI/AJAX responses containing the
      name of the block rendered
    • Disabled caching of the product comparison popup in the default ESI policy.
      This does not affect the product comparison block, only the popup window
      showing the actual comparison

    RELEASE-0.5.4

    • Fixed the Varnish-generated frontend cookie occasionally being set with
      the wrong path when Magento was located in a subdirectory instead of the
      root of the site
    • The built-in crawler should no longer try to crawl products that are not
      visible in the frontend
    • Missing blocks caused by layout changes between different handles should be
      handled more gracefully by Turpentine now
    • Parent products will also be banned when a child product goes out of stock
      or is saved
    • Fixed CMS URL generation for the built-in crawler
    • Fixed product stock change check to actually work
    • Improved the dummy request mock up. It should have all expected fields
      populated now and changes to it will not affect the global state or original
      request
    • Added a Magento shell script (util/varnishadm.php) that can be used like
      the real varnishadm command for users who aren't able to use real
      varnishadm command
    • Fixed duplicate flash messages experienced in some cases (thanks to
      @craigcarnell)
    • Made the custom_include.vcl file's location configurable, see the new
      Custom VCL File Location option
    • Added template parsing to the custom include VCL file, {{variable}}
      replacement will now also work in this file
    • Added a toggle-able Varnish Bypass to Cache Management page for bypassing
      the cache (including ESI) for a single admin session (thanks to @alexandre-jardin)
    • Varnish will now strip the Google-related parameters from the request to
      increase cache hit-rate

    RELEASE-0.5.5

    • Made VCL templates slightly shorter to help with running into the inline
      VCL character limit
    • The warm-cache.sh script now respects the PROC environment variable for
      the number of processes to use while warming the cache
    • [#253] Fixed VCL to correctly identify Chrome on OS X
    • [#281] Fixed unintentional flushing of full cache in some cases (thanks
      @jeroenvermeulen)
    • [#301] Fixed IE caching AJAX ESI includes (thanks @nickbock)
    • [#320] AJAX ESI should be compatible with themes that use jQuery instead of
      Prototype (thanks @steverice)
    • [#334] Bad URIs that cause the dummy request creation to throw an exception
      will now log the bad URI and hide the exception when debugging is disabled
      (thanks @ajardin)
    • [#337] Improve layout handle searching for ESI blocks in some cases (thanks
      @sanbornm)
    • [#356] Fix ESI blocks not rendering child blocks (thanks @magedev)
    • Changed Varnish-generated session ID format for compatibility with the
      SFC_Kount extension
    • Failures during advanced registry loading in ESI requests should be handled
      more gracefully

    RELEASE-0.6.0

    This release requires a small addition to Varnish's configuration when used with
    Magento CE 1.8+ or EE 1.13+, see these instructions

    • [#362] Fixed ESI detection for message block (thanks @eth8505)
    • [#380] Fixed ESI cache flushes not firing in some cases (thanks @gabrielsomoza)
    • [#391] Added Magento Composer Installer support (thanks @ajardin)
    • [#405] Fixed disabling Varnish bypass (thanks @ajardin)
    • [#438] Implemented ban lurker-friendly bans (thanks @jeroenvermeulen)
    • [#443] Fixed caching of static assets when the Add Store Code to Urls option
      is enabled (thanks @jeroenvermeulen)
    • [#345] Fixed compatibility with Magento CE 1.8 and EE 1.13

    RELEASE-0.6.1

    • [#471] Fixed addMessage() in messages block (@arosenhagen)
    • [#445] Update Cron.php for compatibility with MageWorx_XSitemap (@evensisftw)
    • [#474] Add ESI decoder utility (@jeroenvermeulen)
    • [#485] Trigger layout events when rendering ESI blocks (@eth8505)
    • [#490] Fix missing ESI blocks when they are defined in a reference instead
      of a block (@paales)
    • [#472] Added ESI parameter for caching flash message
      blocks (@jeroenvermeulen)
    • [#494] Added option to control the stripping of whitespace from generated
      VCLs (@eth8505)
    • [#549] Enabling the fix_product_toolbar option now clears previously set
      view preferences (@jeroenvermeulen)
    • [#529] Added decoding of the referrer to the ESI decoder
      utility (@jeroenvermeulen)
    • [#536] Allow // (double slash) comments in VCL files and strip them when
      trimming whitespace (@eth8505)

    RELEASE-0.6.2

    • [#635] Fixed typos (@pborelli)
    • [#668] Replace short open tag (@XnS)
    • [#721] Fix license according to SPDX (@ihor-sviziev)
    • [#740] Do not return pipe for OPTIONS straight away (@ashsmith)
    • [#598] Ensure POST request gets normalized data (@melvyn-sopacua)
    • [#739] Ban CMS Page after a CMS Revision has been updated (@ashsmith)
    • Added fix for community poll problems
    • [#516] Fixes multiple sessions generated on first page visit (@jharrisonau)
    • [#796] Ignore additional GET Parameters in Varnish Cache via Configuration (@thampe)
    • [#626] Fix for dummy blocks not working (@jeroenvermeulen)
    • [#719) Replace connect20/nexcessnet_turpentine package in composer.json (@ihor-sviziev)

    RELEASE-0.6.3

    • [#499] Use rewrite instead of local Session model for form key handling (@eth8505)
    • [#817] Damian/cache management extended. Added validations for EE and Full Page cache (@damian-pastorini)
    • [#521] Fix for search input field on search results page (@jeroenvermeulen)
    • Fix for recently viewed products block in CE 1.9.1 (Issue #801)
    • [#522] Custom log file (issue #510) (@eth8505)
    • [#836] Add OS X .DS_Store and nbproject to gitignore (@cbb7123)
    • [#832] Fixed duplicated frontend cookie bug (@mabigo)
    • [#527] Feature/admin clear specific page (@craigcarnell)
    • [#838] Added customer_group access option to cache based on customer group (@pejoo)
    • [#825] Fix messages returning a empty "ul" (@BarryCarlyon)
    • [#826] Tweak logging for empty getNameInLayout (@BarryCarlyon)
    • [#843] Check if path isset before using it (@craigcarnell)
    • Removed session generation code in VCL - see issue #345
    • [#586] Updated debug helper (@magedev)
    • [#848] Replace Nexcessnet_Turpentine_Model_Dummy_Request with Magento model (@craigcarnell)
    • [#849] escape | character (@craigcarnell)
    • Better escaping of double slashes in urls (for better hitrate) (@joolswills)
    • [#860] Removing ref to nonexistent file from modman (@cgrice )
    • [#596] update docs to make an important notice on Crawler IP Addresses setting under Caching Options (@arosenhagen)
    • [#878] Explicit cache bypass for progress sections (@astorm)
    • [#844] Fix for HTTPS ESI URLs (@jeroenvermeulen)
    • [#865] Implemented load balancing support (@jeroenvermeulen)

    RELEASE-0.6.5

    • Varnish 4 (@aheadley @aricwatson)

    RELEASE-0.6.6

    • [#923] DetermineVersion 3.0 to 3.0.3 bugfix (@timmuller)
    • [#945] Send unmodified url to the backend server (@thampe)
    • [#885] Add maintenance mode that will allow debug_ips through to visit the site, all other users get the landing page (@craigcarnell)
    • [#955] Include theme specific handles to ESI data (@LyndonHook)
    • [#972] Fixed bug with wrong return value of ->getSkinUrl() (@ceckoslab)

    RELEASE-0.6.7

    • [#951] Added 'disableEsiInjection' ESI policy option.
    • [#1005] Invalidating cms pages with url enging with slash. (@sivaschenko)
    • [#1020] Add the form key to wishlist submit to prevent 403 errors. (@paulpartington)
    • [#1036] Prime Checkout and Light Checkout Compatibility. (@sprankhub)
    • [#1050] Use Simple Hash" option for static files. (@jeroenvermeulen)
    • [#1031] Improved helper function getModelName(). (@jeroenvermeulen)
    • [#1066] Fix for crawler lock problem with CM_RedisSession. (@jeroenvermeulen)

    RELEASE-0.6.8

    • [#1065] Added ESI policy for cookie notice block. (@aricwatson)
    • [#1066] Fix for crawler lock problem with CM_RedisSession (@jeroenvermeulen )
    • [#1072] Scrutinizer Auto-Fixes. (@miguelbalparda)
    • [#1078] Fix regex check - blank value passed check. (@aricwatson)
    • [#1087] Fixed missing '}' typo #1087. (@aricwatson)
    • [#1117] Fix #1100. (@GLips)
    • [#1155] Update TECHNICAL_NOTES.md. (@GLips)

    RELEASE-0.6.9

    RELEASE-0.6.9

    2016-04-21 13:34:30
    • Version number: 0.6.9
    • Stability: Stable
    • Compatibility: 1.8, 1.8.1, 1.9, 1.9.1, 1.9.2
    You must be registered and logged in to get extension key.

    Magento Connect 2.0

    Magento Connect 2.0

    Nexcess.net Turpentine Extension for Magento

    Scrutinizer

    Turpentine is a full page cache extension for Magento
    that works with Varnish, a very fast caching reverse-proxy. By
    default, Varnish doesn't cache requests with cookies and Magento sends the
    frontend cookie with every request causing a (near) zero hit-rate for Varnish's cache.
    Turpentine configures Varnish to work with Magento and modifies Magento's
    behaviour to significantly improve the cache hit rate.

    Note that while this extension is now considered stable, it is strongly
    recommended that it be tested on a development/staging site before deploying
    on a production site due to the potential need to add custom ESI policies
    for blocks added by other extensions.

    Features

    • Full Page Caching, with hole-punching via Varnish ESI and/or AJAX, even for
      logged in visitors
    • Configurable via standard Magento methods (Admin system configuration and
      layout XML), no manual editing of Varnish config required for most cases
    • Able to generate and apply new Varnish VCLs (configurations) on the fly,
      without restarting/changing Varnish's config files or flushing the cache
    • Blacklist requests from caching by URL or parameters (SID, store, etc)
    • Configure cache TTL by URL and individual block's TTL
    • Supports multiple Varnish instances for clustered usage
    • Automatic cache clearing on actions (clearing product/catalog/cms page after saving)
    • Supports non-root Magento installs (i.e. putting Magento in /store/ instead
      of /) and multi-store/multi-site setups
    • Support for site-crawlers for cache warming, and includes a (basic)
      built-in site-crawler
    • SSL support
      through Pound or Nginx

    Requirements

    • Magento Community Edition 1.6+ or Magento Enterprise Edition 1.11+
    • Varnish 2.1+ (including 3.0+)

    Installation & Usage

    See the Installation
    and Usage pages.

    Support

    If you have an issue, please read the FAQ
    then if you still need help, open a bug report in GitHub's
    issue tracker.

    Please do not use Magento Connect's Reviews or (especially) the Q&A for support.
    There isn't a way for me to reply to reviews and the Q&A moderation is very slow.

    Contributing

    If you have a fix or feature for Turpentine, submit a pull request through GitHub
    to the devel branch. The master branch is only for stable releases. Please
    make sure the new code follows the same style and conventions as already written
    code.

    How it works

    The extension works in two parts, page caching and block (ESI/AJAX) caching. A
    simplified look at how they work:

    For pages, Varnish first checks whether the visitor sent a frontend cookie.
    If they didn't, then Varnish will generate a new session token for them. The page
    is then served from cache (or fetched from the backend if it's not already in
    the cache), with any blocks with ESI polices filled in via ESI. Note that the
    cookie checking is bypassed for clients identified as crawlers (see the
    Crawler IP Addresses and Crawler User Agents settings).

    For blocks, the extension listens for the core_block_abstract_to_html_before
    event in Magento. When this event is triggered, the extension looks at the block
    attached to it and if an ESI policy
    has been defined for the block then the
    block's template is replaced with a simple ESI (or AJAX) template that tells Varnish to
    pull the block content from a separate URL. Varnish then does another request to
    that URL to get the content for that block, which can be cached separately from
    the page and may differ between different visitors/clients.

    Notes and Caveats

    • Turpentine will not help (directly) with the speed of "actions" like adding things
      to the cart or checking out. It only caches, so it can only speed up page load
      speed for site browsing. It will remove a lot of load on the backend though so
      for heavily loaded sites it can free up enough backend resources to have a
      noticeable effect on "actions".
    • There are some technical limitations when using Varnish 2.1.x: External ESI
      requests are not blocked, and per-block TTLs in ESI policies are not honored
      (all blocks use the default TTL)
    • The core parts of Turpentine (caching and ESI/AJAX injection) work under Magento CE 1.5, but a significant
      portion of the auxiliary functionality doesn't work due to changes to event names. That
      said, it would be possible to use Turpentine with Magento CE 1.5 with an understanding
      that it is not supported and what actions need to be taken manually. Both
      cache flushing (both automatic an manual) and cache warming (due to
      missing events that trigger the cache flushing) do not work.
    • Anonymous blocks are not able to be hole-punched. For CMS pages, it is
      recommended that you include the block in the page's layout updates XML and
      give it a name, then it can have an ESI policy like normal

    Known Issues

    • Logging and statistics will show all requests as coming from the same IP address
      (usually localhost/127.0.0.1). It should be possible to work around this using
      Apache's mod_remoteip
      or mod_rpaf.

    Demo

    See the Demo Sites
    wiki page.

    If you use Turpentine (on a production site), feel free to add your site to the
    list!

    License

    The code is licensed under GPLv2+, much of the ESI-specific code is taken from
    Hugues Alary's Magento-Varnish
    extension, which is licensed as GPLv3.

    RELEASE-0.6.8

    2016-01-14 14:50:37
    • Version number: 0.6.8
    • Stability: Beta
    • Compatibility: 1.8, 1.8.1, 1.9, 1.9.1, 1.9.2
    You must be registered and logged in to get extension key.

    Magento Connect 2.0

    Magento Connect 2.0

    Nexcess.net Turpentine Extension for Magento

    Scrutinizer

    Turpentine is a full page cache extension for Magento
    that works with Varnish, a very fast caching reverse-proxy. By
    default, Varnish doesn't cache requests with cookies and Magento sends the
    frontend cookie with every request causing a (near) zero hit-rate for Varnish's cache.
    Turpentine configures Varnish to work with Magento and modifies Magento's
    behaviour to significantly improve the cache hit rate.

    Note that while this extension is now considered stable, it is strongly
    recommended that it be tested on a development/staging site before deploying
    on a production site due to the potential need to add custom ESI policies
    for blocks added by other extensions.

    Features

    • Full Page Caching, with hole-punching via Varnish ESI and/or AJAX, even for
      logged in visitors
    • Configurable via standard Magento methods (Admin system configuration and
      layout XML), no manual editing of Varnish config required for most cases
    • Able to generate and apply new Varnish VCLs (configurations) on the fly,
      without restarting/changing Varnish's config files or flushing the cache
    • Blacklist requests from caching by URL or parameters (SID, store, etc)
    • Configure cache TTL by URL and individual block's TTL
    • Supports multiple Varnish instances for clustered usage
    • Automatic cache clearing on actions (clearing product/catalog/cms page after saving)
    • Supports non-root Magento installs (i.e. putting Magento in /store/ instead
      of /) and multi-store/multi-site setups
    • Support for site-crawlers for cache warming, and includes a (basic)
      built-in site-crawler
    • SSL support
      through Pound or Nginx

    Requirements

    • Magento Community Edition 1.6+ or Magento Enterprise Edition 1.11+
    • Varnish 2.1+ (including 3.0+)

    Installation & Usage

    See the Installation
    and Usage pages.

    Support

    If you have an issue, please read the FAQ
    then if you still need help, open a bug report in GitHub's
    issue tracker.

    Please do not use Magento Connect's Reviews or (especially) the Q&A for support.
    There isn't a way for me to reply to reviews and the Q&A moderation is very slow.

    Contributing

    If you have a fix or feature for Turpentine, submit a pull request through GitHub
    to the devel branch. The master branch is only for stable releases. Please
    make sure the new code follows the same style and conventions as already written
    code.

    How it works

    The extension works in two parts, page caching and block (ESI/AJAX) caching. A
    simplified look at how they work:

    For pages, Varnish first checks whether the visitor sent a frontend cookie.
    If they didn't, then Varnish will generate a new session token for them. The page
    is then served from cache (or fetched from the backend if it's not already in
    the cache), with any blocks with ESI polices filled in via ESI. Note that the
    cookie checking is bypassed for clients identified as crawlers (see the
    Crawler IP Addresses and Crawler User Agents settings).

    For blocks, the extension listens for the core_block_abstract_to_html_before
    event in Magento. When this event is triggered, the extension looks at the block
    attached to it and if an ESI policy
    has been defined for the block then the
    block's template is replaced with a simple ESI (or AJAX) template that tells Varnish to
    pull the block content from a separate URL. Varnish then does another request to
    that URL to get the content for that block, which can be cached separately from
    the page and may differ between different visitors/clients.

    Notes and Caveats

    • Turpentine will not help (directly) with the speed of "actions" like adding things
      to the cart or checking out. It only caches, so it can only speed up page load
      speed for site browsing. It will remove a lot of load on the backend though so
      for heavily loaded sites it can free up enough backend resources to have a
      noticeable effect on "actions".
    • There are some technical limitations when using Varnish 2.1.x: External ESI
      requests are not blocked, and per-block TTLs in ESI policies are not honored
      (all blocks use the default TTL)
    • The core parts of Turpentine (caching and ESI/AJAX injection) work under Magento CE 1.5, but a significant
      portion of the auxiliary functionality doesn't work due to changes to event names. That
      said, it would be possible to use Turpentine with Magento CE 1.5 with an understanding
      that it is not supported and what actions need to be taken manually. Both
      cache flushing (both automatic an manual) and cache warming (due to
      missing events that trigger the cache flushing) do not work.
    • Anonymous blocks are not able to be hole-punched. For CMS pages, it is
      recommended that you include the block in the page's layout updates XML and
      give it a name, then it can have an ESI policy like normal

    Known Issues

    • Logging and statistics will show all requests as coming from the same IP address
      (usually localhost/127.0.0.1). It should be possible to work around this using
      Apache's mod_remoteip
      or mod_rpaf.

    Demo

    See the Demo Sites
    wiki page.

    If you use Turpentine (on a production site), feel free to add your site to the
    list!

    License

    The code is licensed under GPLv2+, much of the ESI-specific code is taken from
    Hugues Alary's Magento-Varnish
    extension, which is licensed as GPLv3.

    RELEASE-0.6.7

    2015-10-12 14:52:52
    • Version number: 0.6.7
    • Stability: Stable
    • Compatibility: 1.8, 1.8.1, 1.9, 1.9.1, 1.9.2
    You must be registered and logged in to get extension key.

    Magento Connect 2.0

    Magento Connect 2.0

    Change Log

    RELEASE-0.0.4

    • Initial Magento Connect release

    RELEASE-0.0.5

    • Add new VCL backend for Magento admin with longer timeout values

    RELEASE-0.0.6

    • Make backend timeouts and grace period configurable
    • Initial Magento Enterprise Edition compatible release on Magento Connect
    • Improve cache hit-rate in some cases

    RELEASE-0.1.0

    • Hole-punching support via ESI
    • Crawler support for cache warming
    • Most issues with Varnish socket communication will display flash errors
      instead of throwing exceptions
    • Many/most configuration options were changed or renamed

    RELEASE-0.1.1

    • Fixed EE ESI template and layout install location
    • Fix missing files in previous Magento Connect package

    RELEASE-0.1.2

    • Disable ESI injection if request does not come through Varnish to prevent
      broken output for SSL-enabled sites

    RELEASE-0.1.3

    • Fix ESI block rendering to be more accurate. This fixes the issue where some
      blocks didn't render exactly right (missing links in the header block)

    RELEASE-0.1.4

    • Added ESI block flushing on customer login/logout
    • Fixed syntax error under PHP 5.2
    • Added syntax check to build script
    • Made footer block global ESI cached by default
    • Removed Varnish Management admin page<ul>
    • VCL is now saved and applied on Varnish Options and Caching Options config
      saving
    • Cache clearing is now integrated into Cache Management page like other Magento
      cache types
    • Cache clearing by URL and content-type have been removed since they were
      not very useful in light of automatic cache clearing
    </li>
    </ul>

    RELEASE-0.1.5

    • Fix VCL application and saving when the Magento compiler is enabled
    • Remove defunct debug option config dependancies
    • Added right.poll block to default ESI cache policy
    • Fix occasional "ESI processing not enabled" message (double ESI-include)
    • Fix Varnish Pages refresh not flushing Varnish cache

    RELEASE-0.1.6

    • Add support for identifing crawlers by User-Agent in addition to IP address,
      see the new Crawler User Agents setting (matches Googlebot, siege, ab, and
      MageSpeedTest.com by default)
    • Fix stale Login/Logout links
    • Add documentation for SSL Support

    RELEASE-0.2.0

    • Added AJAX injection for very short lived and/or frequently changed blocks
      (like the flash messages). This should resolve the issue with flash messages
      not displaying or displaying sporadically. To enable for other blocks, change
      the setEsiOptions method in the turpentine_esi.xml layout file to
      setAjaxOptions. Note that AJAX injected blocks are not cached at all
    • Added TTL extension for cache hits. Cached object's TTL will be extended by a
      small amount on cache hits to keep frequently used cache objects from expiring
      (unless the cache is flushed), allowing for lower TTL values to keep the cache
      from filling.
    • Prevented ESI injected blocks from being cached via Magento's block html
      caching while still allowing full block output to be cached. This is an
      improvement on the fix in RELEASE-0.1.5 for double ESI-includes
    • Fixed Magento using the ESI getBlock URL as the previously visited URL for
      visitor sessions
    • Fixed ESI injected blocks using the ESI getBlock URL as the current URL
      when rendering
    • Reduced size of generated VCL to reduce chance of hitting CLI buffer limit

    RELEASE-0.2.1

    • Changed the syntax for dummy blocks and registry keys in the setAjaxOptions
      and setEsiOptions layout methods, see the wiki for the new syntax
    • Improved serialization of registry items in ESI/AJAX blocks
    • Fixed AJAX requests always being over HTTPS even if the main page was
      requested over HTTP
    • Changed the dummy URL to "/checkout/cart" instead of "/"
    • Fixed AJAX injection for messages block, which didn't use the standard
      layout method for block definitions. This also includes a new option to
      "Fix Flash Messages" which allows for disabling the new behavior for compatiblity
      with other AJAX extensions
    • Fixed POST request caching, which sometimes caused POST requests to fail the
      first time, and then succeed (bug introduced in RELEASE-0.2.0)
    • Fixed CE 1.6 + EE 1.11 incompatibility introduced in RELEASE-0.2.0

    RELEASE-0.3.0

    The new site crawler functionality in this release adds a new User-Agent to the
    default Crawler User Agents setting: "Nexcessnet_Turpentine/."
    It is strongly recommended to manually add this new user agent string to the
    Crawler User Agents* setting after upgrading as Magento won't automatically
    update the config setting with the new default value if the config has been
    saved before.
    This does not apply to new installs.

    • Added built-in crawler for automatically warming the cache. Also automatically
      warms pages that are flushed on save (product/category/CMS pages)
    • Removed hard-coded "messages" block AJAX options, the ESI/AJAX options for
      the "messages" block can now be configured in the ESI layout file like any
      other block
    • Made ESI client-cache ban (clear) events configurable. See the new "ESI
      Client Cache Purge Events" option
    • Enabling the Normalize User-Agent setting now also differentiates between
      desktop and mobile browsers, for caching different output for desktop and mobile
      browsers
    • Fixed messages block not correctly updating the layout if the layout cache
      was enabled
    • AJAX loaded blocks now (quickly) fade in instead of popping in
    • Enabled continuous-integration builds for PHP 5.2, 5.3, and 5.4 through
      Travis-CI. This is only
      relevant to developers and has no effect on users of the extension

    RELEASE-0.3.1

    • Fixed generated VCL to work with multi-store/multi-site setups with different
      URL paths

    RELEASE-0.3.2

    • Fixed Turpentine not correctly detecting and disabling ESI/AJAX on requests
      with HTTP Authorization
    • Fixed some requests being passed through Varnish instead of piped resulting
      in incorrect handling of response output
    • Removed cached object TTL extension (added in RELEASE-0.2.0) due to issues
      with cached object contention at high load
    • Improved warm-cache.sh script to handle different platforms better and
      take advantage of multiple processors/cores
    • Added advanced session validation. Varnish will now respect the Magento settings
      for validating the User-Agent, X-Forwarded-For, and Via headers, and the remote
      IP address with respect to sessions (under System &gt; Configuration &gt; General &gt;
      Web &gt; Session Validation Settings).

    RELEASE-0.4.0

    There are changes to the ESI layout syntax in this release, any customizations
    that have been done to the ESI layout will need to be updated

    • Improved serialization of ESI/AJAX data in URLs. ESI/AJAX URLs should now be
      50-75% as long as they previously were
    • Fixed rare cases of invalid characters in ESI/AJAX URLs, which would cause
      the block to not load or display an error message
    • Unified AJAX and ESI code paths. ESI and AJAX includes no longer use
      duplicated code which will make it easier to add other other inclusion methods
      in the future and reduces the potential for bugs
    • Selecting between AJAX and ESI inclusion is now done with the method
      parameter to setEsiOptions, setAjaxOptions is no longer supported
    • Added ability to cache AJAX requests
    • The old cacheType parameter for setEsiOptions in the layout has been
      split into two new options: scope and access<ul>
    • scope = global: the cached object valid for the entire site
    • scope = page: the cached object is specific to a single page
    • access = public: the cached object is valid for any visitor
    • access = private: the cached object is valid for a single visitor's session
    </li>
  • ESI block default TTL options have been removed. The new default for public
    ESI blocks is the same as the Varnish page TTL and private blocks use the
    session cookie lifetime as the TTL
  • Turpentine will now detect if there is a difference between how a block
    should be loaded vs how it is requested (ex. manually changing the method
    parameter for a AJAX block to ESI). If ESI debugging is turned off an error
    (403) will be returned
  • Client-side caching will now be used for static assets, in addition to
    Varnish's regular caching (via the Cache-Control header)
  • Improved page rendering performance. Pages that include ESI blocks will now
    render significantly faster (up to 50% in testing), dependant on how many
    ESI block includes were on the page
  • Fixed Turpentine ESI request entries in the Magento visitor log. This should
    result in a small speed-up for AJAX requests particularly as most of the time
    token for the request was spent doing the logging
  • Added custom VCL inclusion. Custom logic can be added to the VCL Turpentine
    generates by putting it in
    app/code/community/Nexcessnet/Turpentine/misc/custom_include.vcl. If this
    file is found, Turpentine will automatically include it. Note that it is not
    Varnish version-specific like the other templates, users will need to make sure
    the VCL code used is compatible with the version of Varnish that they use
  • </ul>

    RELEASE-0.5.0

    There are changes to the ESI layout syntax (again) in this release, any
    customizations that have been done to the ESI layout or added for custom blocks
    will need to be updated and moved to the local.xml file. Additionally, the
    Varnish cache will need to be fully flushed or cached pages that reference
    previously cached ESI blocks will not load those blocks

    • Added support for event-based partial ESI cache flushing. ESI blocks will
      now only be flushed on the events specified for them in the layout rather than
      all of a client's ESI blocks being flushed on any event that triggered a flush
    • Removed the purge_events option as it was no longer needed with the new
      partial ESI flushing support
    • Removed the need for initial request pass through, Varnish will now generate
      a session token for new visitors and serve them pages from the cache on their
      first visit
    • Fixed CMS pages not being automatically flushed on update
    • Fixed piped requests in Varnish not having headers handled appropriately
    • Added ability to whitelist IP addresses for debug info from Varnish, even
      if Varnish debugging is disabled via Magento's developer IP setting
    • Added flushing on a product page, product review list, and individual review
      view on review saving (such as changing from 'Pending' to 'Approved')
    • Combined the Varnish and ESI debug options
    • Made the logging done by the extension consistent, all messages logged by
      Turpentine will be prefixed with TURPENTINE:
    • Added HMAC signing to the encrypted ESI data to prevent possible
      tampering with the ESI data in the request
    • The turpentine_esi_custom.xml file that was previously suggested to be
      used for custom ESI policies has been removed in favor of Magento's built-in
      facility for this (local.xml). Any ESI policies defined in turpentine_esi_custom.xml
      should be moved the local.xml file in the theme's layout directory to
      prevent issues with the order of defining blocks and setting ESI policies on
      them.

    RELEASE-0.5.1

    This is the first release of Turpentine marked "stable" in Magento Connect

    • Fix PHP error when Block Logging is turned on
    • Saving a child product of a configurable or grouped product will now also
      cause the parent product(s) to be flushed. This makes saving consistent with
      the out-of-stock flushing behaviour
    • Varnish will now properly distinguish between HTTP and HTTPS responses. This
      should fix warnings in some browsers about mixing secure and insecure content
      when using Varnish+Turpentine behind an SSL proxy

    RELEASE-0.5.2

    • Added profiling calls for more debugging and performance-profiling options
    • Fixed layout XML caching logic to prevent writing to the cache on every
      page load, this should result in a small performance improvement on
      Varnish cache misses
    • Fixed multiple frontend cookies being generated when Magento was installed
      in the root of a domain (/)
    • Added support for translating the SID URL param into the frontend cookie
      for sharing sessions across different domains
    • Added utility script to dump Varnish's active VCL (util/dump-active-vcl.sh)
      for debugging
    • Improve ESI URL redirect interception, Turpentine should now prefer to
      redirect to the referring URL instead of defaulting to /checkout/cart/ all
      the time
    • Re-enabled visitor logging for ESI/AJAX requests, this fixes product
      comparison for non-logged-in visitors

    RELEASE-0.5.3

    • Added runtime model/helper/block rewriting. This negates the need to comment
      out the core/messages block rewrite to really disable the flash messages
      fix when using Turpentine in combination with certain other extensions
    • Add run-time detection of Varnish cli_buffer param to allow for longer VCLs
      after increasing the limit at Varnish start up
    • Added the new Fix Product List Toolbar option (under Varnish Options &gt;
      General) to prevent caching of the products-per-page and product sorting options
      in the product list toolbar. Note that this option defaults to Disabled
    • Added the store and currency cookies to the request hash. This allows
      Varnish to differentiate between multiple stores with the same base URL and
      fixes currency handling.
    • Added a new option to disable the automatic application of the new VCL when
      making changes to the Varnish Options or Caching Options config sections
    • The Flush Catalog Images Cache and Flush JavaScript/CSS Cache no longer
      also flush the corresponding URLs in Varnish. This helps prevent broken images
      and script links after using those buttons.
    • Fixed Varnish ESI parsing failures that some users were experienced. This
      should prevent the "ESI processing not enabled" seen on some blocks
    • Removed the default ESI policy on the checkout.cart block as it was
      causing the shipping and tax quoting to not update correctly. It will be
      re-added in a future release once the quote issue is resolved
    • Added a X-Turpentine-Block header to ESI/AJAX responses containing the
      name of the block rendered
    • Disabled caching of the product comparison popup in the default ESI policy.
      This does not affect the product comparison block, only the popup window
      showing the actual comparison

    RELEASE-0.5.4

    • Fixed the Varnish-generated frontend cookie occasionally being set with
      the wrong path when Magento was located in a subdirectory instead of the
      root of the site
    • The built-in crawler should no longer try to crawl products that are not
      visible in the frontend
    • Missing blocks caused by layout changes between different handles should be
      handled more gracefully by Turpentine now
    • Parent products will also be banned when a child product goes out of stock
      or is saved
    • Fixed CMS URL generation for the built-in crawler
    • Fixed product stock change check to actually work
    • Improved the dummy request mock up. It should have all expected fields
      populated now and changes to it will not affect the global state or original
      request
    • Added a Magento shell script (util/varnishadm.php) that can be used like
      the real varnishadm command for users who aren't able to use real
      varnishadm command
    • Fixed duplicate flash messages experienced in some cases (thanks to
      @craigcarnell)
    • Made the custom_include.vcl file's location configurable, see the new
      Custom VCL File Location option
    • Added template parsing to the custom include VCL file, {{variable}}
      replacement will now also work in this file
    • Added a toggle-able Varnish Bypass to Cache Management page for bypassing
      the cache (including ESI) for a single admin session (thanks to @alexandre-jardin)
    • Varnish will now strip the Google-related parameters from the request to
      increase cache hit-rate

    RELEASE-0.5.5

    • Made VCL templates slightly shorter to help with running into the inline
      VCL character limit
    • The warm-cache.sh script now respects the PROC environment variable for
      the number of processes to use while warming the cache
    • [#253] Fixed VCL to correctly identify Chrome on OS X
    • [#281] Fixed unintentional flushing of full cache in some cases (thanks
      @jeroenvermeulen)
    • [#301] Fixed IE caching AJAX ESI includes (thanks @nickbock)
    • [#320] AJAX ESI should be compatible with themes that use jQuery instead of
      Prototype (thanks @steverice)
    • [#334] Bad URIs that cause the dummy request creation to throw an exception
      will now log the bad URI and hide the exception when debugging is disabled
      (thanks @ajardin)
    • [#337] Improve layout handle searching for ESI blocks in some cases (thanks
      @sanbornm)
    • [#356] Fix ESI blocks not rendering child blocks (thanks @magedev)
    • Changed Varnish-generated session ID format for compatibility with the
      SFC_Kount extension
    • Failures during advanced registry loading in ESI requests should be handled
      more gracefully

    RELEASE-0.6.0

    This release requires a small addition to Varnish's configuration when used with
    Magento CE 1.8+ or EE 1.13+, see these instructions

    • [#362] Fixed ESI detection for message block (thanks @eth8505)
    • [#380] Fixed ESI cache flushes not firing in some cases (thanks @gabrielsomoza)
    • [#391] Added Magento Composer Installer support (thanks @ajardin)
    • [#405] Fixed disabling Varnish bypass (thanks @ajardin)
    • [#438] Implemented ban lurker-friendly bans (thanks @jeroenvermeulen)
    • [#443] Fixed caching of static assets when the Add Store Code to Urls option
      is enabled (thanks @jeroenvermeulen)
    • [#345] Fixed compatibility with Magento CE 1.8 and EE 1.13

    RELEASE-0.6.1

    • [#471] Fixed addMessage() in messages block (@arosenhagen)
    • [#445] Update Cron.php for compatibility with MageWorx_XSitemap (@evensisftw)
    • [#474] Add ESI decoder utility (@jeroenvermeulen)
    • [#485] Trigger layout events when rendering ESI blocks (@eth8505)
    • [#490] Fix missing ESI blocks when they are defined in a reference instead
      of a block (@paales)
    • [#472] Added &lt;only_cache_if&gt; ESI parameter for caching flash message
      blocks (@jeroenvermeulen)
    • [#494] Added option to control the stripping of whitespace from generated
      VCLs (@eth8505)
    • [#549] Enabling the fix_product_toolbar option now clears previously set
      view preferences (@jeroenvermeulen)
    • [#529] Added decoding of the referrer to the ESI decoder
      utility (@jeroenvermeulen)
    • [#536] Allow // (double slash) comments in VCL files and strip them when
      trimming whitespace (@eth8505)

    RELEASE-0.6.2

    • [#635] Fixed typos (@pborelli)
    • [#668] Replace short open tag (@XnS)
    • [#721] Fix license according to SPDX (@ihor-sviziev)
    • [#740] Do not return pipe for OPTIONS straight away (@ashsmith)
    • [#598] Ensure POST request gets normalized data (@melvyn-sopacua)
    • [#739] Ban CMS Page after a CMS Revision has been updated (@ashsmith)
    • Added fix for community poll problems
    • [#516] Fixes multiple sessions generated on first page visit (@jharrisonau)
    • [#796] Ignore additional GET Parameters in Varnish Cache via Configuration (@thampe)
    • [#626] Fix for dummy blocks not working (@jeroenvermeulen)
    • [#719) Replace connect20/nexcessnet_turpentine package in composer.json (@ihor-sviziev)

    RELEASE-0.6.3

    • [#499] Use rewrite instead of local Session model for form key handling (@eth8505)
    • [#817] Damian/cache management extended. Added validations for EE and Full Page cache (@damian-pastorini)
    • [#521] Fix for search input field on search results page (@jeroenvermeulen)
    • Fix for recently viewed products block in CE 1.9.1 (Issue #801)
    • [#522] Custom log file (issue #510) (@eth8505)
    • [#836] Add OS X .DS_Store and nbproject to gitignore (@cbb7123)
    • [#832] Fixed duplicated frontend cookie bug (@mabigo)
    • [#527] Feature/admin clear specific page (@craigcarnell)
    • [#838] Added customer_group access option to cache based on customer group (@pejoo)
    • [#825] Fix messages returning a empty "ul" (@BarryCarlyon)
    • [#826] Tweak logging for empty getNameInLayout (@BarryCarlyon)
    • [#843] Check if path isset before using it (@craigcarnell)
    • Removed session generation code in VCL - see issue #345
    • [#586] Updated debug helper (@magedev)
    • [#848] Replace Nexcessnet_Turpentine_Model_Dummy_Request with Magento model (@craigcarnell)
    • [#849] escape | character (@craigcarnell)
    • Better escaping of double slashes in urls (for better hitrate) (@joolswills)
    • [#860] Removing ref to nonexistent file from modman (@cgrice )
    • [#596] update docs to make an important notice on Crawler IP Addresses setting under Caching Options (@arosenhagen)
    • [#878] Explicit cache bypass for progress sections (@astorm)
    • [#844] Fix for HTTPS ESI URLs (@jeroenvermeulen)
    • [#865] Implemented load balancing support (@jeroenvermeulen)

    RELEASE-0.6.5

    • Varnish 4 (@aheadley @aricwatson)

    RELEASE-0.6.6

    • [#923] DetermineVersion 3.0 to 3.0.3 bugfix (@timmuller)
    • [#945] Send unmodified url to the backend server (@thampe)
    • [#885] Add maintenance mode that will allow debug_ips through to visit the site, all other users get the landing page (@craigcarnell)
    • [#955] Include theme specific handles to ESI data (@LyndonHook)
    • [#972] Fixed bug with wrong return value of -&gt;getSkinUrl() (@ceckoslab)
    1 2 3 4 5 ... 7
    Q&A
    (21 Questions : 16 Answers)

    Product Q&A

    Ask your questions. Share your answers.

     
     
    « Back
     
     
    Sort by
     
    2 answers

    1.8.1.0 Compatibility

    Avatar Image Url:: http://www.magentocommerce.com/images/avatars/uploads/avatar_27347772
    Customer avatar
    Does this work with CE 1.8.1.0?
    by
    sml12
    -
    2 years, 10 months ago
    0points
    0out of 0found this question helpful.
    Was this helpful?Yes0No0

    Answers

    Avatar Image Url:: http://www.magentocommerce.com/images/avatars/uploads/avatar_404763
    Customer avatar
    Answer: 
    From what I've gathered in my test environment, it is not. Looks like Varnish itself has some compatibility issues with 1.8.X and Turpentine goes right along with it. I can't get this working at all since the upgrade.
    by
    barproducts
    -
    2 years, 6 months ago
    +1point
    1out of 1found this answer helpful.
    Was this helpful?Yes1No0

    Avatar Image Url:: http://www.magentocommerce.com/images/avatars/uploads/avatar_27454397
    Customer avatar
    Answer: 
    Version 0.6.0 upwards works with 1.8+. This version fixes an incompatibility with the form_key CSRF protection. You'll need to add -p esi_syntax=0x2 to your Varnish startup options.
    by
    multicoptersltd
    -
    2 years, 5 months ago
    +1point
    1out of 1found this answer helpful.
    Was this helpful?Yes1No0
    Avatar Image Url:: http://www.magentocommerce.com/images/avatars/uploads/avatar_105580
    Customer avatar
    Does this extension work with Magento 1.9.0.1?
    by
    Kunzi
    -
    2 years, 1 month ago
    0points
    0out of 0found this question helpful.
    Was this helpful?Yes0No0

    Answers

    Avatar Image Url:: http://www.magentocommerce.com/images/avatars/uploads/avatar_26873850
    Customer avatar
    Answer: 
    BUMP! - Has this developer Varnished? lol.

    When is an update available for 1.9.1 ?????
    by
    scribblevision
    -
    2 years, 1 month ago
    0points
    0out of 0found this answer helpful.
    Was this helpful?Yes0No0

    Avatar Image Url:: http://www.magentocommerce.com/images/avatars/uploads/avatar_4899
    Customer avatar
    Answer: 
    CE 1.9 is supported as of version 0.6.1
    by
    nexcess_net
    -
    2 years ago
    0points
    0out of 0found this answer helpful.
    Was this helpful?Yes0No0
    Avatar Image Url:: http://www.magentocommerce.com/images/avatars/uploads/avatar_27588912
    Customer avatar
    Just wondered if this worked with V4 of varnish - it isnt mentioned on this page but it is talked about on your github?

    Thanks
    by
    acarr
    -
    2 years ago
    +1point
    1out of 1found this question helpful.
    Was this helpful?Yes1No0

    Answers

    Avatar Image Url:: http://www.magentocommerce.com/magento-connect/skin/frontend/enterprise/connect/images/pictures/developer-avatar.jpg
    Customer avatar
    Answer: 
    It seems that is not compatible :
    https://github.com/nexcess/magento-turpentine/wiki/Installation
    by
    pydubreucq
    -
    1 year, 3 months ago
    0points
    0out of 0found this answer helpful.
    Was this helpful?Yes0No0

    Avatar Image Url:: http://www.magentocommerce.com/magento-connect/media/avatars/avatar_4899.png
    Customer avatar
    Answer: 
    We're have an active development branch that supports Varnish 4, and should be adding official support for Varnish 4 in the coming weeks.
    by
    nexcess_net
    -
    1 year, 3 months ago
    0points
    0out of 0found this answer helpful.
    Was this helpful?Yes0No0
    Avatar Image Url:: http://www.magentocommerce.com/images/avatars/uploads/avatar_26234457
    Customer avatar
    After I enable Varnish and complete the install I am no longer able to view GET timthumb.php images for my homepage. Timthumb.php brings in several images for my slideshow and product slider. Anyone have any experience with getting timthumb.php images to work after enabling varnish on port 80 and setting up the turpentine plugin?

    Cody
    by
    Betsworth22
    -
    3 years, 7 months ago
    0points
    0out of 0found this question helpful.
    Was this helpful?Yes0No0

    Answers

    Avatar Image Url:: http://www.magentocommerce.com/images/avatars/uploads/avatar_26268542
    Customer avatar
    Answer: 
    Hi, im no expert but we managed to also install varnish and turpentine, the way i understand how it works is that varnish server is serving cached content. If timthumb.php serves dynamic images then varnish will show only the cached version. You have to create an xml block for that file. Then edit the turpentine_esi.xml and add that block with an esi parameter to tell varnish not to cache that block. When a the page is called, varnish will pull the block from the webserver and combine it with the cached version to serve the complete page. Hope this helps.
    by
    jpadua
    -
    3 years, 7 months ago
    0points
    0out of 0found this answer helpful.
    Was this helpful?Yes0No0
    Avatar Image Url:: http://www.magentocommerce.com/images/avatars/uploads/avatar_371050
    Customer avatar
    Hi, I don't know where and how to configure Varnish.
    by
    jaautomacao
    -
    3 years, 3 months ago
    0points
    0out of 0found this question helpful.
    Was this helpful?Yes0No0

    Answers

    Avatar Image Url:: http://www.magentocommerce.com/images/avatars/uploads/avatar_27405268
    Customer avatar
    Answer: 
    Hi,

    After installation go to your Configuration panel.
    ( System > Configuration ).

    In left panel there has to be a "Turpentine" option list. And in that list you can see Varnish and Caching options pages
    by
    semihmasat
    -
    2 years, 9 months ago
    0points
    1out of 2found this answer helpful.
    Was this helpful?Yes1No1
    Avatar Image Url:: http://www.magentocommerce.com/images/avatars/uploads/avatar_25933365
    Customer avatar
    HI,

    How to solve this problem? On product click

    ESI processing not enabled

    Varnish 3
    Magento 1.7.0.2
    by
    brunomenol
    -
    2 years, 2 months ago
    0points
    0out of 0found this question helpful.
    Was this helpful?Yes0No0

    Answers

    Avatar Image Url:: http://www.magentocommerce.com/magento-connect/media/avatars/avatar_4899.png
    Customer avatar
    Answer: 
    Apologies for the late response, then best place to ask questions about Turpentine is on the github:
    https://github.com/nexcess/magento-turpentine

    Please open an issue on github if this problem is still occurring and we'll see what we can do!
    by
    nexcess_net
    -
    1 year, 3 months ago
    0points
    0out of 0found this answer helpful.
    Was this helpful?Yes0No0
    Avatar Image Url:: http://www.magentocommerce.com/images/avatars/uploads/avatar_151175
    Customer avatar
    We are thinking of moving over to use this Varnish module instead of the one from Phoenix, but see the VCV file is being auto-generated.

    We see it is possible to hook into the generated file with a custom file, however we need to add settings both in the top and in the end of the loading of the file. What are the recommendations here? Is it OK to just "fork" the generated file and just manually adjust that while file afterwards?
    by
    Trollweb
    -
    2 years ago
    0points
    0out of 0found this question helpful.
    Was this helpful?Yes0No0

    Answers

    Avatar Image Url:: http://www.magentocommerce.com/magento-connect/media/avatars/avatar_4899.png
    Customer avatar
    Answer: 
    Apologies for the late response, then best place to ask questions about Turpentine is on the github:
    https://github.com/nexcess/magento-turpentine

    To answer your question, that should be ok. Just make sure that the Turpentine is not overwriting your customized VCL file when you save changes. You may also need to tweak your VCL file to take advantage of new features added to Turpentine.
    by
    nexcess_net
    -
    1 year, 3 months ago
    0points
    0out of 0found this answer helpful.
    Was this helpful?Yes0No0
    Avatar Image Url:: http://www.magentocommerce.com/images/avatars/uploads/avatar_27408533
    Customer avatar
    How can i get the Authentication key for Varnish CLI access?

    Also i faced some issues like
    Error determining Varnish version: Varnish admin socket timeout
    Failed to apply the VCL to 66.117.3.14:80: Failed to load configurator
    Error determining Varnish version: Varnish admin socket timeout
    Failed to load configurator

    Please help us
    by
    gts_sandeep
    -
    1 year, 11 months ago
    0points
    0out of 0found this question helpful.
    Was this helpful?Yes0No0

    Answers

    Avatar Image Url:: http://www.magentocommerce.com/magento-connect/media/avatars/avatar_4899.png
    Customer avatar
    Answer: 
    Apologies for the late response, then best place to ask questions about Turpentine is on the github:
    https://github.com/nexcess/magento-turpentine

    To answer your question, the location of the authentication key is specified by the options given to Varnish when starting up - typically /etc/varnish/secret - but could vary depending on your server config.
    by
    nexcess_net
    -
    1 year, 3 months ago
    0points
    0out of 0found this answer helpful.
    Was this helpful?Yes0No0
    Avatar Image Url:: http://www.magentocommerce.com/images/avatars/uploads/avatar_27335546
    Customer avatar
    Does this extension work with Magento 1.9.1?
    by
    efgenuss
    -
    1 year, 8 months ago
    0points
    0out of 0found this question helpful.
    Was this helpful?Yes0No0

    Answers

    Avatar Image Url:: http://www.magentocommerce.com/magento-connect/media/avatars/avatar_4899.png
    Customer avatar
    Answer: 
    Apologies for the late response, then best place to ask questions about Turpentine is on the github:
    https://github.com/nexcess/magento-turpentine

    To answer your question - yes, it does support CE 1.9.x
    by
    nexcess_net
    -
    1 year, 3 months ago
    0points
    0out of 0found this answer helpful.
    Was this helpful?Yes0No0
    Avatar Image Url:: http://www.magentocommerce.com/images/avatars/uploads/avatar_27709416
    Customer avatar
    I followed the install instructions using modman and everything worked fine but I don't see any varnish configuration options showing up in my admin console.
    by
    nplatzkeii
    -
    1 year, 8 months ago
    0points
    0out of 0found this question helpful.
    Was this helpful?Yes0No0

    Answers

    Avatar Image Url:: http://www.magentocommerce.com/images/avatars/uploads/avatar_27709416
    Customer avatar
    Answer: 
    No. It doesn't. It breaks the entire magento install. Awesome.
    by
    nplatzkeii
    -
    1 year, 8 months ago
    0points
    0out of 0found this answer helpful.
    Was this helpful?Yes0No0
    • 2016-10-30 T09:25:24.552-05:00
    • bvseo_lps, prod_bvqa, vn_prr_5.6
    • cp-1, bvpage1
    • co_hasquestionsanswers
    • loc_en_US, sid_14243, prod, sort_default
    2 next>>
    • 2016-10-30 T09:25:24.555-05:00
    • bvseo_lps, prod_bvqa, vn_prr_5.6
    • cp-1, bvpage1
    • co_hasquestionsanswers
    • loc_en_US, sid_14243, prod, sort_default
    2 next>>
    Get Help

    Support for This Extension

    The best place to start if you need help with a specific extension is to contact the developer. All Magento developers have both a contact email and a support email listed.

    Magento Platform Support

    If you need support for a Magento platform, there are different options for support depending on which Magento platform you are using. Below are links for specific platforms.

    Reviews

    About the Developer

    This extension was developed by and is supported by nexcess

    Rated 4.3 out of 5 by 26 reviewers.
    Rated 5 out of 5 by get last version from github Very good extension but to avoid many bugs specially with nginx, get the last version from github from the branch devil October 20, 2016
    Rated 5 out of 5 by Probably the best Varnish extension of the market Applied this solution on several applications. While sometimes need adjustments generally works really well. July 28, 2016
    Rated 1 out of 5 by i wasted my time realyy i treid everything still not working no steps given for ubuntu with nginx getting Failed to apply the VCL to 127.0.0.1:6082: Varnish data to write over length limit by 1370 characters September 5, 2015
    Rated 1 out of 5 by Varnish & Turpentine when you have plenty of spare time After many and many hours decide to remove Varnish and Turpentine. Problems with shopping cart, ajax, geoip etc are not solvable if you aren't a super expert with loads of free and paid time. So leave it for the experts with to much free time. The removal of Varnish is easy, but after remove of turpentine hours and hours wasted time again to get things running again. August 2, 2015
    Rated 4 out of 5 by Iphone Theme redering issue on some pages Overall this extension is working excellent.. Their is an issue with multiple theme rendering On my mobile iphone theme its sometime renders desktop theme.i have Normalize User-Agent enabled from admin And i have to keep flushing cache from admin to get mobile theme on particular page.. is there any solution? will really apreciate..!! February 24, 2015
    Rated 5 out of 5 by When will this support Magento CE 1.9.. Great extension for Varnish but after testing it only works up to CE 1.7. I realise that magento has some significant changes in the later versions and hence this will not work with it correctly. Do you have any plans to implement support for CE 1.9? or do you have any fix we can apply as I am desperate to get it working! thanks December 20, 2014
    Rated 4 out of 5 by It works perfect in 1.7.0.2 (multistore and multidomain) It works perfect in 1.7.0.2 (multistore and multidomain), after modifying the vcl to avoid the mistake of dirty cookie "double cookie frontend" If you solve the problem of double cookie, without needing to have to call our technicians, would be to give it a 5, for now I leave in 4 * January 31, 2014
    Rated 4 out of 5 by Huge speed improvement but After finally getting it working, I noticed a massive speed increase on the website. But we are using 1.8.1.0 and found it has a problem with the cart. If you are using 1.8.0 or 1.8.1 don't use this yet until it has been updated. Or customers often wont be able to add items to the cart. January 29, 2014
    Rated 5 out of 5 by Great speed improvement I got great speed improvement on my server using Varnish, it was a bit hard to set-up at the beginning but then I made it work. In the configuration backend port needs to be 8080 for Apache and Varnish needs to listen at port 80 in front. This is a sample configuration that works for me. Great piece of software for Magento ! October 28, 2013
    Rated 5 out of 5 by Superb Varnish can be a real pain, particularly with ecom sites, but with a little nous this module works really really well, and we've seen massive page speed increases - particular on HA multi server environments. That said, if doesn't negate the need for some prior knowledge of varnish and your web server of choice. Big thanks to Nexcess for making it freely available! October 11, 2013
    • 2016-10-30 T09:22:15.432-05:00
    • bvseo_lps, prod_bvrr, vn_prr_5.6
    • cp-1, bvpage1
    • co_hasreviews, tv_26, tr_26
    • loc_en_US, sid_14243, prod, sort_default
    2 3 next>>

    In order to upload extension, you must be logged in to the Magento Community. Click here to login or register.

    Close

    Register

    * Required Fields

    Close window

    Forgot Your Password?

    Please enter your email below and we'll send you a new password.

    * Required Fields

    Close window

    Login

    To upload extension you must be logged in.

    * Required Fields

    Close window

    You are using an outdated browser

    We built Magento Connect using the latest techniques and technologies.
    This makes Magento Connect faster and easier to use.
    Unfortunately, your browser doesn't support those technologies.
    Use the links below to download a new browser or upgrade your existing browser.