更新时间:2022-06-13 01:16:19
您可能需要使用 private_no_expire
而不是私人
,但设置您知道不会更改的内容的过期时间长,并确保您处理 if-modified-since
和 if-none-match
请求类似于Emil的帖子。
You might want to use private_no_expire
instead of private
, but set a long expiration for content you know is not going to change and make sure you process if-modified-since
and if-none-match
requests similar to Emil's post.
$tsstring = gmdate('D, d M Y H:i:s ', $timestamp) . 'GMT';
$etag = $language . $timestamp;
$if_modified_since = isset($_SERVER['HTTP_IF_MODIFIED_SINCE']) ? $_SERVER['HTTP_IF_MODIFIED_SINCE'] : false;
$if_none_match = isset($_SERVER['HTTP_IF_NONE_MATCH']) ? $_SERVER['HTTP_IF_NONE_MATCH'] : false;
if ((($if_none_match && $if_none_match == $etag) || (!$if_none_match)) &&
($if_modified_since && $if_modified_since == $tsstring))
{
header('HTTP/1.1 304 Not Modified');
exit();
}
else
{
header("Last-Modified: $tsstring");
header("ETag: \"{$etag}\"");
}
其中 $ etag
可以是基于内容或用户ID,语言和时间戳的校验和,例如
Where $etag
could be a checksum based on the content or the user ID, language, and timestamp, e.g.
$etag = md5($language . $timestamp);