我一直在研究优化网站应用程序的策略,特别是与浏览器缓存和动态数据有关。因为同一动态内容可能会在一个会话中被多次加载,所以我想出了以下方法,使用PHP的输出缓冲区和内容的哈希作为ETag。
我意识到这种方法真正节省的只是将数据传输回用户,因为PHP脚本仍然需要完全运行,但我很好奇是否有人做过类似的事情,以及是否有任何想法或问题我应该注意,或者其他更好的方法。
这是我在每个页面顶部包含的代码:
<?php
function hash_buffer($content) {
$buffer_hash = crc32($content);
if ($_SERVER['HTTP_IF_NONE_MATCH'] == $buffer_hash) {
header('HTTP/1.1 304 Not Modified');
header("ETag: $buffer_hash");
return '';
}
header('Cache-Control: private, no-cache');
header("ETag: $buffer_hash");
return $content;
}
ob_start('hash_buffer');
?>