We have created a simple page level cache for opencart and posted the code on GitHub, here: https://github.com/budgetneon/pagecache.
You can also find it on the opencart extension directory, here.
It's a very simple install. One new file in your system/library directory, and 2 minor changes to your index.php file.
Update: We added an admin panel, and an auto-installer in the admin panel that will make the changes to the index.php file for you. Added a screenshot of the admin panel below...scroll down.
The upsides for this page cache:
* Simple. Easy to install and remove.
* Fast, as it skips most of the opencart code, database calls, etc, by operating/exiting at the very top of the index.php when serving from the cache.
* Has a reasonable amount of logic to determine what NOT to cache. (logged in users, https pages, etc), and has a manual list of url patterns you can edit as well.
* Open source, with the FreeBSD license. Very few restrictions on use.
The caveats:
* Tested, but not extensively. Please don't just throw this on a production site without doing your own comprehensive testing. That said, we are running a version of this (with some modifications) on our production site, budgetneon.com.
* We don't have complex logic looking at, for example, url parameters. If opencart returns an HTTP 200 code, we'll cache it (with some exceptions). Therefore, it's possible to accidentally cache a lot of pages, especially if a robot were to retrieve pages like http://site.tld?foo=1, http://site.tld?foo=2, http:///site.tld?foo=3, and so on.
* Despite our efforts to figure out what pages not to cache, we've likely missed some.
* It does not cache special http headers. So, for example, if you have logic adding X-Frame-Options headers, the cache pages won't be served with them.
Demo sites, and more info here: octurbo.com
Would welcome any feedback, bug fixes, etc. Please submit either on github, or in this thread.
Update: Screenshot of the admin panel:
