php缓存问题
我有一个用于缓存一些图像的类php缓存问题,php,caching,Php,Caching,我有一个用于缓存一些图像的类 <?php class Vp_CacheImage { public function cache($cacheTime, $place) // $place = id of image (between 1 and 100) { $send_body = true; $etag = '"' . md5(date('d.m.Y', time()) . $place) . '"'; header(
<?php
class Vp_CacheImage
{
public function cache($cacheTime, $place) // $place = id of image (between 1 and 100)
{
$send_body = true;
$etag = '"' . md5(date('d.m.Y', time()) . $place) . '"';
header("ETag: " . $etag );
header("Last-modified: " . gmdate("D, d M Y H:i:s", $cacheTime) . " GMT");
$inm = explode(',', getenv("HTTP_IF_NONE_MATCH"));
foreach ($inm as $i)
{
if (trim($i) == $etag || trim($i) == $cacheTime)
{
header ("HTTP/1.0 304 Not Modified");
$send_body = false;
}
}
if(getenv("HTTP_IF_MODIFIED_SINCE") == gmdate("D, d M Y H:i:s", $cacheTime). " GMT")
{
header ("HTTP/1.0 304 Not Modified");
$send_body = false;
}
header("Expires: " . gmdate("D, d M Y H:i:s", time() + Config::$config['cache']['images']['topvideo']) . " GMT");
header("Cache-Control: max-age=" . Config::$config['cache']['images']['topvideo'] . ", must-revalidate");
if ($send_body) return true; else return false;
}
}
然后您必须首先将其从缓存中删除,或者。。添加温度。一个随机标记,比如:?x=234
,在它后面并重新加载它
您还可以将expire设置为重新加载之前的某个时刻,但这很棘手。您能简单地将一个版本附加到图像URL吗?示例:myimage.jpg?v=10
这样做会导致浏览器请求图像的新副本,而不是使用缓存的副本。强制浏览器再次获取图像的最简单方法是在文件名末尾附加查询字符串
e、 g.
您也可以将expire设置为重新加载之前的某个时刻,但这很棘手。
可能不可能,因为您可能不知道何时需要重新加载它。