我一直在研究一些策略来优化我正在研究的 Web 应用程序,特别是与 Web 浏览器缓存和动态数据相关的。由于可能在会话中多次加载相同的动态内容,我想出了以下方法,使用 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');
?>