WordPress Cache Enabler Plugin Updates
In October 2015 KeyCDN released a free WordPress caching plugin called Cache Enabler. We did this because we wanted to give back to the WordPress community in the offering of a caching solution that was not complicated and most importantly, free. This plugin was initially released as a lightweight caching plugin that was able to speed up WordPress websites by generating static HTML files that could then be minified and even converted for WebP support. With each change made since we have kept the same objective while maintaining our philosophy of keeping Cache Enabler simple. Now, over five years later, it has grown to have 90,000+ active installations and just recently passed 1,000,000 all time downloads.
What has changed?
Over the last few months there have been many changes made to Cache Enabler. In fact, nearly the entire plugin has been rewritten, as can be seen in the Cache Enabler repository statistics below. If it was not rewritten it was likely refactored in some way.
The development was led by KeyCDN and had the helpful support of community feedback and contributions. While this rapid development did cause a few issues along the way, it allowed Cache Enabler to become a significantly better plugin. Many bugs have been fixed and enhancements added. The new code base is easier to integrate with as well as build upon, which will allow for enhancements to be introduced easier in the future. Each new version brought important changes that allowed Cache Enabler to evolve into what it is now.
Version 1.4 was the first new version branch that has been released in two years. The goal of this version was to first refactor the entire code base as to prepare it for the changes that were coming ahead. An overview of some of the improvements that came from this version are highlighted below:
- Updated setting and removing the
- Updated WP-CLI
clearsubcommand messages and handling for multisite networks.
- Added cache clearing types to clear the page cache by default instead of always clearing the page and subpages cache.
- Added support for rewriting inline image URLs invoked with CSS to WebP.
- Added scheme-based caching to allow both HTTP and HTTPS pages to be cached separately.
- Added support for delivering cached pages to logged in users.
- Fixed trailing slash handling to support permalink structures without a trailing slash.
- Fixed page cache clearing through the admin bar button for installations in a subdirectory.
- Fixed advanced cache recognition for multisite networks.
Version 1.5 was where a majority of the rewriting took place. The first goal of this version was to improve the system that decides what is cached and delivered. This led to the cache engine being introduced, which itself removed a majority of the convoluted code by making it so only the
advanced-cache.php drop-in could deliver a cached page. The second goal of version 1.5 was to improve cache clearing by both reducing unnecessary cache clearing and adding cache clearing behavior where it was missing. An overview of some of the improvements that came from this version are highlighted below:
- Updated settings file to be PHP instead of JSON to improve speed and security when retrieving the settings.
- Updated cache size handling for multisite networks.
- Updated output buffer timing to start earlier on the
inithook instead of
template_redirectto improve compatibility with other plugins.
- Added cache engine to improve handling and performance.
- Add new cache clearing structure for post actions, like publishing, updating, or trashing any post type.
Version 1.6 should be the last major change for the foreseeable future. The first goal of this version was to update all action and filter hooks to improve interacting with Cache Enabler. The second goal of this version was to continue reducing unnecessary cache clearing. An overview of some of the improvements that came from this version are highlighted below:
- Update all action and filter hooks.
- Update cache clearing behavior for comment actions to prevent unnecessary cache clearing.
- Update output buffer timing to start even earlier on the
advanced-cache.phpdrop-in instead of the
inithook to improve compatibility with other plugins.
- Add site cache clearing behavior.
- Fix getting the cache size for the main site in a subdirectory network.
- Fix cache clearing behavior for multisite networks.
- Fix deleting the cache size transient.
Cache Enabler settings
Each version above has had some impact on the Cache Enabler settings, whether that was adding or removing settings, or updating the layout itself. We wanted to make the settings more clear on the functionality provided while keeping the settings page feeling like a native WordPress settings page.
What is the future for Cache Enabler?
We are really excited about how much time we have been able to dedicate to improving Cache Enabler. We love open source and are happy that this is one of the ways we can contribute back to the community. While there have been many changes introduced lately that will not always be the case going forward. We do have more enhancements that we plan on introducing throughout time, but now that the majority of what we wanted to complete in this phase is done we want to allow time to pass to gather data and user feedback. As time goes on refinements will continue to be made, which means Cache Enabler will only continue to be improved from here.