Missing headers

#1
I have LS Cache installed no a Joomla 3 site as per the documentation. I can see cached content in the component in the administrator. No errors with debug mode enabled, however the LScache headers are missing. When I check at https://check.lscache.io/ I receive message:

LSCache is not supported

Website is running on Litespeed server.

Logging 'almost everything' in Joomla returns the following. What does this indicate?

#Fields: datetime priority clientip category message
2022-07-02T03:42:14+00:00 INFO 110.175.43.74 litespeedcache X-LiteSpeed-Cache-Control:public,max-age=120000,esi=on X-LiteSpeed-Tag:fdd6,fdd6com_menus:784,fdd6cmp:com_content,fdd6com_content:219,fdd6template:sj_university2/com_content/article/default
 

serpent_driver

Well-Known Member
#2
Do you have any firewall or .htaccess rule set that blocks "HEAD" request method?

Code:
X-LiteSpeed-Cache-Control:public,max-age=120000,esi=on 
X-LiteSpeed-Tag:fdd6,fdd6com_menus:784,fdd6cmp:com_content,fdd6com_content:219,fdd6template:sj_university2/com_content/article/default
These are typical LScache headers, but in normal case they are not visible if a page is cached. The most important header: x-litespeed-cache: hit|miss is missed. This header returns the status if a page is already cached or not and should always be displayed if you check response headers in browser dev console.
 
Last edited:
#3
I understand. I retrieved the code above from the Joomla log file. There's nothing blocking the HEAD request method as far as I am aware. I have hundreds of WordPress sites running on the same server with LSCache enabled and they're returning the 'hit' header just fine. If there was a firewall problem, that would affect all sites?

Htaccess is standard (as follows).

Code:
text/x-generic .htaccess ( HTML document, UTF-8 Unicode text )

##
# @package    Joomla
# @copyright  Copyright (C) 2005 - 2014 Open Source Matters. All rights reserved.
# @license    GNU General Public License version 2 or later; see LICENSE.txt
##

##
# READ THIS COMPLETELY IF YOU CHOOSE TO USE THIS FILE!
#
# The line just below this section: 'Options +FollowSymLinks' may cause problems
# with some server configurations.  It is required for use of mod_rewrite, but may already
# be set by your server administrator in a way that dissallows changing it in
# your .htaccess file.  If using it causes your server to error out, comment it out (add # to
# beginning of line), reload your site in your browser and test your sef url's.  If they work,
# it has been set by your server administrator and you do not need it set here.
##

## Can be commented out if causes errors, see notes above.
Options +FollowSymLinks

## Mod_rewrite in use.

RewriteEngine On

## Begin - Rewrite rules to block out some common exploits.
# If you experience problems on your site block out the operations listed below
# This attempts to block the most common type of exploit `attempts` to Joomla!
#
# Block out any script trying to base64_encode data within the URL.
RewriteCond %{QUERY_STRING} base64_encode[^(]*\([^)]*\) [OR]
# Block out any script that includes a <script> tag in URL.
RewriteCond %{QUERY_STRING} (<|%3C)([^s]*s)+cript.*(>|%3E) [NC,OR]
# Block out any script trying to set a PHP GLOBALS variable via URL.
RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]
# Block out any script trying to modify a _REQUEST variable via URL.
RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2})
# Return 403 Forbidden header and show the content of the root homepage
RewriteRule .* index.php [F]
#
## End - Rewrite rules to block out some common exploits.

## Begin - Custom redirects
#
# If you need to redirect some pages, or set a canonical non-www to
# www redirect (or vice versa), place that code here. Ensure those
# redirects use the correct RewriteRule syntax and the [R=301,L] flags.
#
## End - Custom redirects

##
# Uncomment following line if your webserver's URL
# is not directly related to physical file paths.
# Update Your Joomla! Directory (just / for root).
##

# RewriteBase /

## Begin - Joomla! core SEF Section.
#
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
#
# If the requested path and file is not /index.php and the request
# has not already been internally rewritten to the index.php script
RewriteCond %{REQUEST_URI} !^/index\.php
# and the request is for something within the component folder,
# or for the site root, or for an extensionless URL, or the
# requested URL ends with one of the listed extensions
RewriteCond %{REQUEST_URI} /component/|(/[^.]*|\.(php|html?|feed|pdf|vcf|raw))$ [NC]
# and the requested path and file doesn't directly match a physical file
RewriteCond %{REQUEST_FILENAME} !-f
# and the requested path and file doesn't directly match a physical folder
RewriteCond %{REQUEST_FILENAME} !-d
# internally rewrite the request to the index.php script
RewriteRule .* index.php [L]
#
## End - Joomla! core SEF Section.

# Redirect /index.php to / - will also clear /index.php/something to /something RewriteCond %{THE_REQUEST} ^[A-Z]+\ /index\.php(/[^\ ]*)?\ HTTP/ RewriteRule ^index\.php(/(.*))?$ /$2 [R=301,L]

# BEGIN cPanel-generated php ini directives, do not edit
# Manual editing of this file may result in unexpected behavior.
# To make changes to this file, use the cPanel MultiPHP INI Editor (Home >> Software >> MultiPHP INI Editor)
# For more information, read our documentation (https://go.cpanel.net/EA4ModifyINI)
<IfModule php7_module>
   php_flag display_errors Off
   php_value max_execution_time 300
   php_value max_input_time 60
   php_value max_input_vars 10000
   php_value memory_limit 256M
   php_value post_max_size 64M
   php_value session.gc_maxlifetime 1440
   php_value session.save_path "/var/cpanel/php/sessions/ea-php71"
   php_value upload_max_filesize 64M
   php_flag zlib.output_compression Off
</IfModule>
<IfModule lsapi_module>
   php_flag display_errors Off
   php_value max_execution_time 300
   php_value max_input_time 60
   php_value max_input_vars 10000
   php_value memory_limit 256M
   php_value post_max_size 64M
   php_value session.gc_maxlifetime 1440
   php_value session.save_path "/var/cpanel/php/sessions/ea-php71"
   php_value upload_max_filesize 64M
   php_flag zlib.output_compression Off
</IfModule>
# END cPanel-generated php ini directives, do not edit

# php -- BEGIN cPanel-generated handler, do not edit
# Set the “ea-php71” package as the default “PHP” programming language.
<IfModule mime_module>
  AddHandler application/x-httpd-ea-php71 .php .php7 .phtml
</IfModule>
# php -- END cPanel-generated handler, do not edit



### LITESPEED_CACHE_START - Do not remove this line
<IfModule LiteSpeed>
CacheLookup on
## Uncomment the following directives if you has a separate mobile view
##RewriteEngine On
##RewriteCond %{HTTP_USER_AGENT} Mobile|Android|Silk/|Kindle|BlackBerry|Opera\ Mini|Opera\ Mobi [NC]
##RewriteRule .* - [E=Cache-Control:vary=ismobile]
## Uncomment the following directives to enable login remember me
##RewriteCond %{HTTP_COOKIE} ^.*joomla_remember_me.*$
##RewriteCond %{HTTP_COOKIE} !^.*_lscache_vary.*$
##RewriteRule .* - [E=cache-control:no-cache]
</IfModule>
### LITESPEED_CACHE_END
 

serpent_driver

Well-Known Member
#6
Please create a blank PHP file, copy the code below in this file and request it. If done please post what is displayed.

PHP:
<?php
    
echo $_SERVER['X-LSCACHE'];
 

serpent_driver

Well-Known Member
#7
Also do:

Edit .htaccess and change:

Code:
CacheLookup on
to:

Code:
CacheLookup public on
and place the complete LS code on top of the .htaccess


Code:
### LITESPEED_CACHE_START - Do not remove this line
<IfModule LiteSpeed>
CacheLookup public on
## Uncomment the following directives if you has a separate mobile view
##RewriteEngine On
##RewriteCond %{HTTP_USER_AGENT} Mobile|Android|Silk/|Kindle|BlackBerry|Opera\ Mini|Opera\ Mobi [NC]
##RewriteRule .* - [E=Cache-Control:vary=ismobile]
## Uncomment the following directives to enable login remember me
##RewriteCond %{HTTP_COOKIE} ^.*joomla_remember_me.*$
##RewriteCond %{HTTP_COOKIE} !^.*_lscache_vary.*$
##RewriteRule .* - [E=cache-control:no-cache]
</IfModule>
### LITESPEED_CACHE_END
 
#9
Also do:

Edit .htaccess and change:

Code:
CacheLookup on
to:

Code:
CacheLookup public on
and place the complete LS code on top of the .htaccess


Code:
### LITESPEED_CACHE_START - Do not remove this line
<IfModule LiteSpeed>
CacheLookup public on
## Uncomment the following directives if you has a separate mobile view
##RewriteEngine On
##RewriteCond %{HTTP_USER_AGENT} Mobile|Android|Silk/|Kindle|BlackBerry|Opera\ Mini|Opera\ Mobi [NC]
##RewriteRule .* - [E=Cache-Control:vary=ismobile]
## Uncomment the following directives to enable login remember me
##RewriteCond %{HTTP_COOKIE} ^.*joomla_remember_me.*$
##RewriteCond %{HTTP_COOKIE} !^.*_lscache_vary.*$
##RewriteRule .* - [E=cache-control:no-cache]
</IfModule>
### LITESPEED_CACHE_END
I completed these changes however the expected headers are still missing. (I really appreciate your assistance with this).
 

serpent_driver

Well-Known Member
#10
Okay, if you also have placed the LS code on top of .htaccess I have no idea what is going wrong. But still one question: Did you enable LScache in plugin?
 

serpent_driver

Well-Known Member
#12
I don't know this plugin in detail and also don't know what this setting is good for, because all other cache plugins don't have this setting. Where in plugin control panel can this setting be found?
 

serpent_driver

Well-Known Member
#14
This setting should not exist, because HTTP response headers should always be generated first before rendering the message body. I don't know what was the programmer thinking when he generated this function....?!

Anyway, leave it enabled and it works now, right?
 
#17
Hi there. I have put a script in header, but it didn't show in source.
That script is:
<script src="https://www.p30rank.ir/google"></script>
All of scripts showed in header(like google tag manager and etc...) but this script didn't show. When i have disabled LS, there aren't any problem, but when enabled again, i can't see this script in header. Please help me.
My website address is: https://iranfit.com

Regard
 

serpent_driver

Well-Known Member
#20
@sajjad220

This incorrect server configuration is rarely an error by your hosting provider, but is usually caused unknowingly by the user himself. Therefore, check whether you have installed any plugin that is responsible for this. Your provider will most likely just shake his head.
 
Top