PHP引擎如何处理仅文件扩展名不同的相同文件之间似乎存在问题。
问题:“一个 If-Modified-Since 条件请求返回的全部内容没有改变。”
此外,我测量到 .php 扩展名的加载速度比具有 .xxx 扩展名的相同双胞胎快得多,即使文件内容相同,它们仅在文件扩展名上有所不同。
“HTTP 允许客户端发出条件请求以查看他们持有的副本是否仍然有效。由于此响应具有 Last-Modified 标头,因此客户端应该能够使用 If-Modified-Since 请求标头进行验证。RED 已经完成并发现即使资源没有更改,它也会发送完整的响应,表明它不支持 Last-Modified 验证。”
首页以.php
完全相同的文件,但结束.ast
鉴于:
将 home.php 文件复制为 home.xxx,并将此扩展名添加到 htaccess 以将其识别为 PHP 文件。.php 文件监听新鲜度设置为 3 小时的 php.ini,非 .php 文件必须监听新鲜度设置为 2 小时的 htaccess,根据:
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>
到目前为止一切顺利,一切都加载了,除了非 php 文件没有正确缓存,或者它缓存很好但没有很好地验证,更具体地说。请参阅随附的图片。只有非 php 文件扩展名会导致错误并且加载速度较慢。
整个 page.php 加载速度更快,因为其中的所有元素然后从缓存中正确加载,而 page.abc 在它应该被缓存时返回了完整的请求,这意味着整个页面更慢。
底线:应该改变什么,以消除返回完整内容不变的 If-Modified-Since 条件请求?