LSWS Cache can be setup for vBSEO with vB cache plugin for guest cache.
vBulletin 3/4
vBSEO 3.6.0
LiteSpeed WebServer 4.0+ (supports public cache)
1. Save the following Cache plugin for vBulletin 3/4 to a file say litespeed_cache.xml
<?xml version="1.0" encoding="ISO-8859-1"?>
<product productid="lswscache" active="1">
<title>Litespeed Caching</title>
<description>settings to make Litespeed page cache working right</description>
<version>1.0</version>
<url />
<versioncheckurl />
<dependencies>
</dependencies>
<codes>
</codes>
<templates>
</templates>
<plugins>
<plugin active="1" executionorder="1">
<title>Unset session id for guest users</title>
<hookname>global_start</hookname>
<phpcode><![CDATA[if($vbulletin->userinfo['userid'] <= 0)
{
$vbulletin->session->vars['sessionurl'] = '';
$vbulletin->session->vars['sessionurl_q'] = '';
}]]></phpcode>
</plugin>
<plugin active="1" executionorder="1">
<title>SET COOKIE FOR LOGGED IN USERS</title>
<hookname>login_verify_success</hookname>
<phpcode><![CDATA[if ($send_cookies AND $cookieuser)
{
// Cookie user
vbsetcookie('imloggedin', 'yes', true, true, true);
}
else
{
// Not permanent
vbsetcookie('imloggedin', 'yes', false, true, true);
}]]></phpcode>
</plugin>
<plugin active="1" executionorder="1">
<title>Send X-LiteSpeed-Cache-Control header for logged in users</title>
<hookname>style_fetch</hookname>
<phpcode><![CDATA[// Do not cache logged in user pages
if ( $vbulletin->userinfo['userid'] )
{
header('X-LiteSpeed-Cache-Control: no-cache');
};]]></phpcode>
</plugin>
</plugins>
<phrases>
</phrases>
<options>
</options>
<helptopics>
</helptopics>
<cronentries>
</cronentries>
<faqentries>
</faqentries>
</product>
2. Add the xml in 1. to vBulletin
Log into Admin Console Panel (http://site/forum/admincp)
Plugins & Products => Add/Import Product)
3. Modify rewrite rules in .htaccess
Rewrite Rules:
RewriteRule ^(.+)$ vbseo.php [L,QSA]
Change to
RewriteRule ^(.+)$ vbseo.php [QSA]
#rules for litespeed cache:
RewriteCond %{HTTP_COOKIE} !vbseo_loggedin=yes
RewriteCond %{HTTP_COOKIE} !bbuserid=
RewriteCond %{HTTP_COOKIE} !bbpassword=
#RewriteCond %{ORG_REQ_URI} ^/(index\.php|)$
RewriteCond %{REQUEST_METHOD} ^HEAD|GET$
RewriteCond %{QUERY_STRING} ^$
RewriteRule (.*) - [L,E=Cache-Control:max-age=60]
4. Enable and Set up Cache Policy in LSWS
In LiteSpeed (v4.1.2 or later) Admin CP → Configuration → Server → Cache
Storage Path: /diskcache
Max Object Size: 128K
Cache Policy
Enable Cache: No
Cache Expire Time (seconds): Not Set
Cache Request with Query String: Yes
Cache Request with Cookie: Yes
Cache Response with Cookie: Yes
Ignore Request Cache-Control: Yes
Ignore Response Cache-Control: Yes
Enable Private Cache: No
Private Cache Expire Time (seconds):
Do-Not-Cache URL(s):
Note:
Cache storage can be set to /dev/shm/diskcache to avoid disk I/O wait if enough memory can be spared.
Cache resource with size less than 128KB.
For cached request, “X-LiteSpeed-Cache: hit” response header should be seen.
IOW, if no such entry in the response header, the response is not cached by LSWS.
*/10 * * * * find /diskcache -type f -mmin +10 –delete
Note: This cron job clean up stale cache storage every 10 minutes.
echo "mkdir /diskcache && chmod nobody.lsadm" >> /etc/rc.local
echo "/diskcache && chmod 770 /diskcache" >> /etc/rc.local
Note: this is to make sure cache directory gets created when server is booted up.