gpt4 book ai didi

php - 在 PHP 中回答 HTTP_IF_MODIFIED_SINCE 和 HTTP_IF_NONE_MATCH

转载 作者:可可西里 更新时间:2023-10-31 22:06:20 26 4
gpt4 key购买 nike

我有用 PHP 5.1.0+ 制作的可缓存动态内容。我已经向客户发送了正确的 header (包括 Last-Modified 和 ETag)。

我现在希望我的脚本能够在出现时回答 $_SERVER['HTTP_IF_MODIFIED_SINCE']$_SERVER['HTTP_IF_NONE_MATCH']。当条件匹配时,我想向客户回答 HTTP 304“Not Modified”

什么是正确的条件?我什么时候发出 304 而不是全部内容?

有问题的已接受答案 How to know when to send a 304 Not Modified response似乎正确地发出了这个问题,但我很难将该代码移植到 PHP 5。

谢谢!

最佳答案

我一直使用:

function caching_headers ($file, $timestamp) {
$gmt_mtime = gmdate('r', $timestamp);
header('ETag: "'.md5($timestamp.$file).'"');
header('Last-Modified: '.$gmt_mtime);
header('Cache-Control: public');

if(isset($_SERVER['HTTP_IF_MODIFIED_SINCE']) || isset($_SERVER['HTTP_IF_NONE_MATCH'])) {
if ($_SERVER['HTTP_IF_MODIFIED_SINCE'] == $gmt_mtime || str_replace('"', '', stripslashes($_SERVER['HTTP_IF_NONE_MATCH'])) == md5($timestamp.$file)) {
header('HTTP/1.1 304 Not Modified');
exit();
}
}
}

不记得是我写的还是从别处得到的...

我通常以这种方式在文件顶部使用它:

caching_headers ($_SERVER['SCRIPT_FILENAME'], filemtime($_SERVER['SCRIPT_FILENAME']));

关于php - 在 PHP 中回答 HTTP_IF_MODIFIED_SINCE 和 HTTP_IF_NONE_MATCH,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2000715/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com