Why is PHP discriminating between .php and .abc extensions for caching?
- by Sam
There seems to be a problem between how PHP engine handles identical files that differ only in their file extension.
Problem: "An If-Modified-Since conditional request returned the full content unchanged."
Also, I measured that the .php extension loads much faster than identitcal twin with .xxx extension even though the file contents are identical, and they differ only in their file extension.
"HTTP allows clients to make
conditional requests to see if a copy
that they hold is still valid. Since
this response has a Last-Modified
header, clients should be able to use
an If-Modified-Since request header
for validation. RED has done this and
found that the resource sends a full
response even though it hadn't
changed, indicating that it doesn't
support Last-Modified validation."
homepage ending with .php
exact same file, but ending .ast
Given:
A home.php file is copied as home.xxx and this extension is added to htaccess to recognize it as a PHP file. The .php file listen to the php.ini where freshness is set to 3 hrs, the non .php files have to listen to htaccess where freshness is set to 2 hrs according to:
AddType application/x-httpd-php .php .ast .abc .xxx .etc
<IfModule mod_headers.c>
ExpiresActive On
ExpiresDefault M2419200
Header unset ETag
FileETag None
Header unset Pragma
Header set Cache-Control "max-age=2419200"
##### DYNAMIC PAGES
<FilesMatch "\\.(ast|php|abc|xxx)$">
ExpiresDefault M7200
Header set Cache-Control "public, max-age=7200"
</FilesMatch>
</IfModule>
So far so good and everything loads, except, the non-php file doesn't cache properly, or it does cache well but doesn't validate well, to be more specific. See images enclosed. Only the non-php file extension causes the error and loads slower.
The entire page.php loads faster as somehow all the elements in there then load properly from cache, while the page.abc has the full request returned while it ought to be cached, meaning the entire page is slower.
Bottom line: What should be changed, in order eliminate the If-Modified-Since conditional request returning the full content unchanged?