This page in Russian with all instructions.
OctoberCMS Lightning-Fast Static File Cache System
Quicksilver on the OctoberCMS Marketplace
Quicksilver is a lightning-fast caching system that converts your website pages into static .html, .xml, .json, and other file formats.
By storing pages as static files, Quicksilver delivers content to your visitors in milliseconds.
Features
- No additional configuration required — easy to use even on shared hosting. Install with one click.
- Intelligent content type detection based on response headers or file extensions, with extensibility support.
- Full support for Laravel’s Storage service, including custom cache disks.
- Optional query string caching, configurable from the backend.
- Optional excluded paths, configurable from the backend.
- Easily extendable via October CMS events.
- No external dependencies; compatible with October CMS v1.1, v2, and v3.
- Can be used together with the October CMS AJAX framework.
Important Notice
This plugin stores page responses as static files. Cached pages are identical for all visitors, regardless of whether a user is logged in or not.
As a result, sensitive or personalized information may be exposed if such pages are cached.
Use the Quicksilver settings to define excluded paths so that pages containing sensitive data are not cached.
© 2026, Nick Khaetsky at Biz-Mark under the GNU General Public License v2.0.
The following theme uses this plugin
Installation via Command Line
php artisan plugin:install BizMark.Quicksilver
Requirements
- PHP 7.4 or higher
- October CMS v1.1, v2, or v3
Installation
php artisan plugin:install BizMark.Quicksilver
Additional configuration
Quicksilver can be configured so that the web server serves cached pages directly, completely bypassing application bootstrapping.
Apache
-
Open your
.htaccessfile and add the following rules before theStandard routessection:## ## Serve Cached Page If Available ## RewriteCond %{REQUEST_URI} ^/?$ RewriteCond %{DOCUMENT_ROOT}/storage/quicksilver/cache/qs_index_qs.html -f RewriteRule .? /storage/quicksilver/cache/qs_index_qs.html [L] RewriteCond %{DOCUMENT_ROOT}/storage/quicksilver/cache%{REQUEST_URI}.html -f RewriteRule . /storage/quicksilver/cache%{REQUEST_URI}.html [L] RewriteCond %{HTTP:X-Requested-With} XMLHttpRequest RewriteRule !^index.php index.php [L,NC] -
Comment out the following line in the
White listed folderssection:RewriteRule !^index.php index.php [L,NC]
-
Ensure the plugin has read/write permissions for the
storage/quicksilver/cachedirectory.
Nginx
location = / {
try_files /storage/quicksilver/cache/qs_index_qs.html /index.php?$query_string;
}
location / {
try_files $uri $uri/ /storage/quicksilver/cache/$uri.html /storage/quicksilver/cache/$uri.json /index.php?$query_string;
}
If you need to send AJAX requests to cached URLs, use the following configuration:
location / {
if ($request_method = POST ) {
rewrite ^/.*$ /index.php last;
}
try_files $uri $uri/ /storage/quicksilver/cache/$uri.html /storage/quicksilver/cache/$uri.json /index.php?$query_string;
}
Ignoring the cached files
Do not forget to exclude the Quicksilver cache directory from version control by adding it to your .gitignore file:
/storage/quicksilver
Clearing the cache
Clear the entire Quicksilver cache:
php artisan quicksilver:clear
Clear the cache for a specific path:
php artisan quicksilver:clear {path}
Events
These events are triggered during request and response validation.
If an event listener returns false, caching will be aborted.
bizmark.quicksilver.is_request_valid- bool
Event::listen('bizmark.quicksilver.is_request_valid', function(\Illuminate\Http\Request $request) {
// request is valid, cache.
return true;
// request is invalid, don't cache.
return false;
});
bizmark.quicksilver.is_response_valid- bool
Event::listen('bizmark.quicksilver.is_response_valid', function(\Symfony\Component\HttpFoundation\Response; $response) {
// response is valid, cache.
return true;
// response is invalid, don't cache.
return false;
});
These events are triggered before and after a cached page is stored, allowing you to modify its contents.
-
bizmark.quicksilver.before_store- voidEvent::listen('bizmark.quicksilver.before_store', function(array $fileInformation) { // Contents of fileInformation // $fileInformation = [ // name // extension // directory // mimeType // path // ]; // ... }); -
bizmark.quicksilver.after_store- voidEvent::listen('bizmark.quicksilver.after_store', function(array $fileInformation) { // Contents of fileInformation // $fileInformation = [ // name // extension // directory // mimeType // path // ]; // ... });
© 2026, Nick Khaetsky at Biz-Mark under the GNU General Public License v2.0.
-
Zimple Digital
Found the plugin useful on 24 Jun, 2024
Hi, just wanted to flag that in the latest version the enable_query_strings setting doesn't work because in both AbstractCache.php and StorageCache.php the setting that is used is cache_query_strings (which doesn't exist) rather than enable_query_strings.
-
Biz-Mark author
Replied on 1 Jul, 2024
Thanks for your review!
If you want to send us an issue, you can do it via email or public repository. The fix already published, you can update your plugin and settings code will be changed accordingly.
-
Mark van den Elzen
Found the plugin useful on 18 Mar, 2024
Works great!! Really happy with this plugin!
I noticed that there is no caching of a page when logged in the backend. Is there a way to cache a page when admin is logged in? My own plugin clears the cache when a client adds or edits records, right now he must visit the page with a private browsing window to cache the "new" page again. Is there a way to automate this? Or a way to have the pages cache when when logged in from the backend? I wanted to ask this in the "product support" section, but I can't register because the confirmation mail for a new account is not send..
-
Biz-Mark author
Replied on 21 Mar, 2024
Thanks for the review!
The feature of not caching while a backend user is logged in cannot be turned off. But, we might add a switch to turn it off in settings in next updates!
-
Nguyen Thai An
Found the plugin not useful on 19 Nov, 2023
After install in october 3.4 then refresh some pages. But I can not see anything in storage/quicksilver directory (already set 777 for storage/quicksilver).
-
Biz-Mark author
Replied on 20 Nov, 2023
Hello Nguyen! Sorry to hear that you meet some unexpected work from our plugin. Static cache generates only when the request meets all conditions:
- You have to be logged out of admin panel.
- Route doesn't start with
/combine - Request isn't XHR from frontend framework
- Route doesn't meet URL exceptions from settings
- Response for request has 200 code from backend
Hope this helps you.
-
Renick Büttner
Found the plugin useful on 14 May, 2023
This is great! Especially suitable for small, less dynamic websites. Keeps the server cool.
-
Andras Mohacsi
Found the plugin not useful on 1 Apr, 2023
Garbage. I installed the CMS base system without adding anything and I've uploaded a free template that has this plugin as dependency. After I did this the website never worked as it should have worked. There were pages without CSS, there were pages with first template, other pages with other one. The links didn't work, the site config didn't work.
-
Biz-Mark author
Replied on 3 Apr, 2023
Hello Andras! Sorry to hear that you have bad experience with our plugin. Seems like you have a problem with your free template or configuration of your web server, because everything that you mentioned is not the responsibility of Quicksilver. Remember that our plugin just caches responses with 200 code from backend, and stores them in storage. Quicksilver doesn't handle any links, static files or anything but the raw HTML of success response. If you believe that our plugin is a source of your problems, email us on info@biz-mark.ru, and we will be happy to help you with your case!
-
Alexander Wenzel
Found the plugin useful on 17 Dec, 2022
Great Plugin. Thank you for sharing!
-
Biz-Mark author
Replied on 19 Dec, 2022
Thanks for the review!
-
Oleg
Found the plugin useful on 5 Dec, 2021
The plugin is very good! Now I score 98 points in the Google test =)
-
Biz-Mark author
Replied on 5 Dec, 2021
Thanks for the review! We are happy that your pagespeed rank is so high!
-
Rob Ballantyne (Dynamedia)
Found the plugin useful on 22 Nov, 2021
This is an excellent plugin.
For static type sites such as blogs, news etc this will greatly reduce running costs and will ensure there is no collapse under a surge of users (Reddit share etc).
I have previously implemented the same functionality using the Nginx fast cgi cache but this achieves a similar benefit but with minimal configuration.
Great job, and thanks!
-
Biz-Mark author
Replied on 23 Nov, 2021
Thanks for your review! We glad that our plugin helped you in your project!
-
Taras Mykytka
Found the plugin useful on 3 Apr, 2021
This is really awesome plugin. Simple but do the job in the best way. Once it saved my server from unexpected traffic, before using this plugin load average was over 20 of 6 maximum, and all another apps and sites on this machine works in impropper way. Even caching all data in Radis don't really helped. But when I setup this plugin, all goes fine. Thanks for this plugin!
-
Biz-Mark author
Replied on 3 Apr, 2021
Thanks for review! We are happy that our plugin helped you with unexpected traffic!
-
Roman Krylov
Found the plugin useful on 6 Jan, 2020
OMG! This is very cool! This plugin saved me from torment! Thanks!
sorry a lot of emotions
-
Biz-Mark author
Replied on 9 Jan, 2020
We are pleased to know that our plugin helped you! Thank you for using it!
-
| 3.3.1 |
Minor Jan 02, 2026 |
|---|---|
| 3.3.0 |
Compatibility with OCMS v4 Jan 02, 2026 |
| 3.2.2 |
Fixed wrong settings code for caching query strings Jul 01, 2024 |
| 3.2.1 |
Small styling changes. Sep 30, 2022 |
| 3.2.0 |
Make default headers configurable. Sep 29, 2022 |
| 3.1.0 |
Added ReportWidget with convenient path clearer. May 30, 2022 |
| 3.0.3 |
Add Cache-control header to cached responses. Apr 27, 2022 |
| 3.0.2 |
Added query params check in has() method. Apr 25, 2022 |
| 3.0.1 |
Reintroduced support for PHP >=7.4 Apr 23, 2022 |
| 3.0.0 |
Complete refactoring. Read UPGRADE.md. Apr 21, 2022 |
| 2.1.0 |
Auto clearing default caches, refactoring Sep 16, 2021 |
| 2.0.0 |
Added support for exceptions and the ability to disable some pages from the cache Dec 09, 2020 |
| 1.3.0 |
!!! Query strings filtering for dynamic pages. Nov 21, 2019 |
| 1.2.2 |
Minor fixes Nov 21, 2019 |
| 1.2.1 |
Fixing typo in russian localization Nov 20, 2019 |
| 1.2.0 |
!!! New ReportWidget for dashboard that allows quiclky purge pages cache and october cache. Nov 20, 2019 |
| 1.1.6 |
Fixing backend opening error Oct 09, 2019 |
| 1.1.5 |
!!! Ajax requests now work properly on cached pages. Place new code in your htaccess like in documentation Aug 19, 2019 |
| 1.1.1 |
Note about AJAX on cached pages in README Aug 19, 2019 |
| 1.1.0 |
!!! Updated configuration section in README. To actually use power of this plugin please configure it. Jul 12, 2019 |
| 1.0.1 |
Removed routes.php file Jul 12, 2019 |
| 1.0.0 |
First version of Quicksilver Jul 02, 2019 |
Upgrading to 3.0
- The cache directory has changed from
/storage/page-cacheto/storage/quicksilver/cache. - Web server configuration (
.htaccessor Nginx) is now optional and can be safely removed. Quicksilver provides additional features when running without direct web server rules.
Upgrading to 1.3
Open your .htaccess file and replace the old cache serving rules section with the updated version from the documentation.
If you have customized this section or prefer not to replace it entirely, add the following two lines immediately after the section header:
© 2026, Nick Khaetsky at Biz-Mark under the GNU General Public License v2.0.