Configuring Cache for Easy Digital Downloads
Caching plugins and services are designed to help ensure your site responds as quickly as possible. We understand that a fast store converts better than a slow store. We’ve worked with multiple caching solutions to write up guides on how to configure their plugin or services to work best with Easy Digital Downloads.
Cloudflare
Easy Digital Downloads works with Cloudfalre’s services, however, there are some settings and suggestions we have. You can view our extensive Cloudflare documentation to ensure your store works with this service.
WP Super Cache
WP Super Cache is one of the most popular caching plugins available. It is fully compatible with Easy Digital Downloads, though if you wish to use it, there are a couple of configuration options you must enable in order for it to work fully.
Once WP Super Cache is activated, go to Settings > WP Super Cache and then click on the Advanced tab. In the Miscellaneous section, there are two options that should be checked:
- Don’t cache pages for known users. (Recommended) – This is primarily for logged-in users.
- Don’t cache pages with GET parameters. (?x=y at the end of a url) – This will ensure that the checkout page and cart widgets work as expected.
- Since WP Super Cache v1.3.1 – Dynamic cached content – This must be enabled in the Advanced Settings section.
- Add /checkout/ to Rejected URIs option.
You can see a screenshot of the settings below:

Rejected URIs example:

WP Fastest Cache
In order to use WP Fastest Cache with Easy Digital Downloads, there are quite a few settings to change. This is a basic list of the settings that need to be configured.
Settings
Logged-in Users: Enabled. This
Preload: Disabled
New Post: Enabled
Updated Post: Enabled
Combine Js: Disabled. This setting frequently causes the JavaScript from EDD to be malformed when updates are made, sometimes causing checkout and adding to cart to fail.
If you are using the Free Downloads Extension, please enable the ‘Mobile’ checkbox, as this will prevent your mobile users from being shown the desktop version of the free downloads form.
Exclude
Add rules to the Exclude section for:
Exclude Pages:
Your checkout page. By default this is `checkout`

Purchase Confirmation page. By default, these URLs contain the `purchase-confirmation` slug.

Note: If you have renamed the default checkout, purchase confirmation, or purchase history pages, you’ll need to use their page URLs here instead of the defaults.
Exclude Cookies:
In order for EDD’s cart to wor,k you’ll need to exclude the `edd_items_in_cart` cookie.

To make sure that cart errors are not cached, exclude the cookie `edd_cart_messages`

Once a purchase is complete, make sure the purchase confirmation isn’t cached by excluding the `edd_purchase` cookie.

If your site uses fees in any way, exclude the `edd_cart_fees` cookie.

In order to support cart recovery, exclude the `edd_resume_payment` cookie.

Make sure the cart itself isn’t cached by excluding the `edd_cart` cookie.

If you are using discounts, be sure to exclude the `cart_discounts` and `preset_discount` cookies.


Exclude JS:
To make sure that the JavaScript file for EDD’s Checkout is always the most up-to-date, you’ll want to exclude it from the cache. Not excluding could prevent your site from allowing customers to checkout when EDD is updated.

If you continue to have issues with WP Fastest Cache with these settings, please reach out to the WP Fastest Cache support team directly at https://www.wpfastestcache.com/contact-us/
WP Engine
If you are hosting your website with WP Engine, you can add Custom Cache Exclusions using your administration panel.
WP Engine provides a documentation article https://wpengine.com/support/cache/#Custom_Cache_Exclusions on how to exclude items from the cache.
In some cases when passing the “discount” parameter in the URL, the discount code is not being added to the Checkout page once the customer reaches it. For that to work, you need to add the “discount” argument as an exclusion, following the steps listed in the article above.
It would need to be added in the format: arg: discount=
Following the same example, you can add other arguments for being excluded from their caching.
Kinsta
For users hosting with Kinsta, it is possible that the Checkout page session data to be cached. The way to fix it is from your hosting account Tools panel by enabling “Remove Set-Cookie headers”.
Cloudways
The Cloudways Breeze plugin for WordPress allows you to exclude certain pages from Caching.
In the Never Cache URL(s) field, add the following (one per line). Note that these URLs might need to be adjusted depending on the slug of the actual page on your website.
/cart
/checkout
/purchase-confirmation
Inside your Cloudways account, under Varnish Settings (for your specific application), add custom exclusion rules so that if any of the cookies at the end of this article are detected, Varnish bypasses the cache.
Also, add the dynamic URL exclusions (same as Breeze above) to ensure these pages aren’t cached by Varnish.
Spider Cache
There are no known conflicts between Spider Cache and Easy Digital Downloads. Spider Cache has undergone extensive testing with Easy Digital Downloads, conducted by the Spider Cache lead developer.
W3 Total Cache
In order to use W3 Total Cache with Easy Digital Downloads, there are a few settings you need to ensure are setup correctly. This is a basic list of the settings that need to be configured.
General Settings
Page Cache: enabled with Disk: enhanced
Minify: disabled
Database cache: disabled
Object cache: disabled
Browser cache: enabled
CDN: enabled (this does not affect EDD)
Object Cache
Global Groups:
users
userlogins
usermeta
user_meta
site-transient
site-options
site-lookup
blog-lookup
blog-details
rss
global-posts
A list of Cookies that EDD uses can be found below:
A complete list can be found below:
edd_items_in_cart
edd_session_*
edd_cart_messages
edd_purchase
edd_cart_fees
edd_resume_payment
edd_cart
cart_discounts
preset_discount
edd_cart_token
edd_saved_cart
This is not an exact list and there will definitely be variations, but this is the config that has been shown to work. If you find other options/variations that work or don’t work,
please contact us via support. We will update this doc as needed.