Why is PHP discriminating between .php and .abc extensions for caching?

Posted by Sam on Stack Overflow See other posts from Stack Overflow or by Sam
Published on 2010-12-21T19:16:10Z Indexed on 2010/12/22 23:54 UTC
Read the original article Hit count: 203

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.

alt text

alt text

"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

alt text


exact same file, but ending .ast

alt text


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?

© Stack Overflow or respective owner

Related posts about php

Related posts about validation