dyerc / craft-litespeed
LiteSpeed LSCache integration for Craft CMS
Installs: 72
Dependents: 0
Suggesters: 0
Security: 0
Stars: 1
Watchers: 1
Forks: 0
Open Issues: 0
Type:craft-plugin
Requires
- php: ^8.0.2
- craftcms/cms: ^4.0.0|^5.0.0
Requires (Dev)
- craftcms/phpstan: dev-main
- phpstan/phpstan: ^1.9
This package is auto-updated.
Last update: 2024-11-16 15:29:56 UTC
README
LiteSpeed Plugin for Craft CMS
A very simple integration with the LiteSpeed web server and LSCache for Craft CMS. The entire LSCache is cleared any time an entry is saved. For a more sophisticated caching solution, try Blitz.
Installation
To install the plugin, search for “LiteSpeed” in the Craft Plugin Store, or install manually using composer.
composer require dyerc/craft-litespeed
Update your .htaccess
to include a block enabling caching for everywhere except the admin area. The following example will cache all pages for 8 hours (28800
seconds) with the exception of any /admin
URLs:
########## Begin - Litespeed cache <IfModule LiteSpeed> RewriteEngine On RewriteCond %{REQUEST_METHOD} ^HEAD|GET$ RewriteCond %{ORG_REQ_URI} !/admin RewriteCond %{ORG_REQ_URI} !/index.php/admin RewriteRule .* - [E=Cache-Control:max-age=28800] </IfModule> ########## End - Litespeed cache
If you would like to exclude some other page from cache (let's say, /mypage.php
), simply add the following line to the existing rewrite conditions:
RewriteCond %{ORG_REQ_URI} !/mypage.php
If you want to cache your site for only 4 hours, you can change the max-age. So, it would be:
RewriteRule .* - [E=Cache-Control:max-age=14400]
LSCache Check Tool
There's a simple way to see if a URL is cached by LiteSpeed: the LSCache Check Tool. Enter the URL you wish to check, and the tool will respond with an easy-to-read Yes or No result.
CSRF Helpers
Any CSRF values (for example {{ csrfInput() }}
) will be cached by LiteSpeed, preventing forms from working correctly. There are two built-in options for working around this situation:
Automatically inject a script into every page which looks for CSRF inputs, fetches a valid value asynchronously after page load and substitutes in the new value. Configure the plugin to do this be creating a config/litespeed.php
file containing:
<?php return [ "production" => [ // Or '*' for all environments "injectCsrf" => true, ], ];
On a manual basis by calling the following twig function.
{{ craft.litespeed.injectCsrf() }}
A JavaScript variable window.LiteSpeed
will also become available containing the following which can be used by any JavaScript within your site which needs to locate a CSRF param.
> window.LiteSpeed { tokenName: "CRAFT_CSRF_TOKEN", tokenValue: "..." }
Requirements
This plugin requires Craft CMS 4.0.0 or later.
Created by Chris Dyer.