In order for LSCache and IP Board to work together, IP Board needs to be modified to send out a ‘Cache-Control: Private’ response header to logged-in users. LSWS will take care of the rest.
Here are the steps that will enable LSWS to work with IP Board:
File admin/sources/classes/output/formats/html/htmlOutput.php needs to be modified to send out a ‘cache-control: private’ response header to logged-in users. Essentially, the response header is a flag that notifies LSWS what kind of cache to serve, which is the only information LSWS needs to know in order to work with IP Board.
Below changes are for IPB v3.1.4 as an example:
# diff -Naur a/htmlOutput.php b/htmlOutput.php —-- a/htmlOutput.php 2011-03-16 15:39:09.000000000 -0400 +++ b/htmlOutput.php 2011-06-27 00:39:38.000000000 -0400 @@ -73,6 +73,17 @@ public function printHeader() { //—————————————– + // Add "cache-control: private" header + // for logged in users + // this is for LiteSpeed cache requirement + //—————————————– + if ( $this->memberData['member_id'] ) + { + header( "cache-control: private" ); + } + + + //—————————————– // Start GZIP compression //—————————————– @@ -1062,4 +1073,4 @@ return $texts[ array_rand($texts) ]; } #
Note: To verify, check the response header when you log in. Server response header “Cache-Control: private” should be seen:
HTTP/1.1 200 OK Content-Encoding: gzip Vary: Accept-Encoding Transfer-Encoding: chunked Date: Wed, 20 Jul 2011 16:59:30 GMT Server: LiteSpeed Connection: close ... Cache-Control: private <==== this is the header ...
In LiteSpeed (v4.1.2 or later) Admin CP → Configuration → Server → Cache
Storage Path: /dev/shm/diskcache Max Object Size: 1024000 Cache Policy Enable Cache: No Cache Expire Time (seconds): Not Set Cache Request with Query String: No Cache Request with Cookie: Yes Cache Response with Cookie: Yes Ignore Request Cache-Control: Yes Ignore Response Cache-Control: No Enable Private Cache: Yes Private Cache Expire Time (seconds): 60
Do-Not-Cache URL(s):
/index.php?app=forums&module=post§ion=post&do=edit_post /index.php?app=forums&module=post§ion=post&do=reply_post /index.php?app=forums&module=moderate§ion=moderate&do=postchoice
Note: Do-Not-Cache URL box holds all of the URL(s) that should NOT be cached.
Input the following rules into .htaccess in front of existing Rewrite rules.
RewriteEngine On ########################################### # For LiteSpeed public cache (guest user) ########################################### RewriteCond %{REQUEST_METHOD} ^HEAD|GET$ RewriteCond %{HTTP_COOKIE} !member_id= [OR] RewriteCond %{HTTP_COOKIE} member_id=0 RewriteCond %{REQUEST_URI} !^/admin RewriteCond %{REQUEST_URI} !(css|js|png|gif)$ RewriteRule .* - [E=Cache-Control:max-age=360]
Note:
0 */2 * * * find /dev/shm/diskcache -type f -mmin 120 –delete
echo "mkdir /dev/shm/diskcache && chmod nobody.lsadm" >> /etc/rc.local echo "/dev/shm/diskcache && chmod 770 /dev/shm/diskcache" >> /etc/rc.local
Note: this is to make sure cache directory gets created when server is booted up.