在PHP中回答HTTP_IF_MODIFIED_SINCE和HTTP_IF_NONE_MATCH
发布时间:2020-12-13 16:36:31 所属栏目:PHP教程 来源:网络整理
导读:我在 PHP 5.1.0中制作了可缓存的动态内容.我已经向客户端发送了正确的头文件(包括Last-Modified和ETag). 我现在希望我的脚本能够在存在时回答$_SERVER [‘HTTP_IF_MODIFIED_SINCE’]和$_SERVER [‘HTTP_IF_NONE_MATCH’].当条件匹配时,我想对客户端回答HTTP
我在
PHP 5.1.0中制作了可缓存的动态内容.我已经向客户端发送了正确的头文件(包括Last-Modified和ETag).
我现在希望我的脚本能够在存在时回答$_SERVER [‘HTTP_IF_MODIFIED_SINCE’]和$_SERVER [‘HTTP_IF_NONE_MATCH’].当条件匹配时,我想对客户端回答HTTP 304“未修改”. 什么是正确的条件?当我发布304而不是整个内容的时候? 接受的答案有问题 谢谢!
我一直用:
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'])); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |