[英]Do imagejpeg(), imagepng() and imagegif() replace existent files?
[英]Specify a cache validator for images created by imagejpeg/imagepng functions
我们都知道我们可以通过在.htaccess文件中添加以下行来为图像指定缓存验证器:
<IfModule mod_expires.c>
ExpiresActive On
ExpiresDefault "access plus 1 year"
</IfModule>
..和..
<IfModule mod_headers.c>
<FilesMatch "\.(bmp|css|flv|gif|ico|jpg|jpeg|js|pdf|png|svg|swf|tif|tiff)$">
Header set Last-Modified "Mon, 31 Aug 2009 00:00:00 GMT"
</FilesMatch>
</IfModule>
但是,它对真正的JPG或PNG文件有效。 但问题是,如何为使用PHP代码和imagejpeg / imagepng函数构建的图像指定缓存验证器? (以上代码对他们无效)
PS:我试图使用.htaccess文件模拟PHP创建的图像的URL,如真实图像(例如: http://example.com/1.jpg
: http://example.com/1.jpg
,由PHP文件生成,不是真正的.jpg图像),但仍然接收缓存验证器警告。
您可以在imagejpeg / imagepng函数之前添加PHP代码:
function TestModifiedSince($PageTimeStamp, $TextDatePage) {
if (isset($_SERVER["HTTP_CACHE_CONTROL"])) {return;}
if (!isset($_SERVER["HTTP_IF_MODIFIED_SINCE"])) {return;}
$TestTime=strtotime($_SERVER["HTTP_IF_MODIFIED_SINCE"]);
if (($TestTime - $PageTimeStamp) >= 0) {
header('Last-Modified: '. $TextDatePage, true, 304);
exit();
}
}
# hh mm ss MM DD YYYY
$DateUpdateBaseDef = mktime(00, 00, 00, 08, 31, 2009);
$TimeHeadUpdate = gmdate('D, d M Y H:i:s', $DateUpdateBaseDef).' GMT';
TestModifiedSince($DateUpdateBaseDef, $TimeHeadUpdate);
我的想法,改变服务器配置,执行不同的扩展而不是PHP。 用于在使用带有php文件源的img标签来渲染图像时打印图像。 使用不同的扩展名,如getimage.iphp。 包含.htaccess设置,其中包含扩展名为.iphp的文件的缓存控制
最后在图像生成功能中使用标题来设置单个图像文件的到期时间。
它的位理论但可能有用作实现的想法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.