PHP文件生成的图片无法使用CDN缓存的解决方法

前端技术 2023/09/06 PHP

今天发现线上有个问题,线上一个图片域名,在前端已经加了CDN缓存,不落缓存,则用PHP动态实现图片缩放,但经PHP处理过的图片输出后,每次都要从后端读取,后端服务器压力瞬间增加,经分析,PHP中没有作304的处理,

HTTP的原理是这样的,每次请求到服务器后,服务端检测有没有修改,如没有修改,可以直接返回一个304的状态码,这样就用客户端的缓存了,CDN的原理就是如此,如果设置了304,就会将相应的URL进行缓存起来;

相关代码如下:

复制代码 代码如下:

//检测有没改变
if (isset($_SERVER[\'HTTP_IF_NONE_MATCH\'])){
    $etag = $_SERVER[\'HTTP_IF_NONE_MATCH\'];
    if (md5($this->image) === $etag){
        header(\"HTTP/1.1 304 Not Modified\");
        exit;
    }
}

header(\"Last-Modified: \" . gmdate(\"D, d M Y H:i:s\", strtotime(\'2011-1-1\')).\" GMT\");
//输出etag头
header(\'etag:\' . md5($this->image));
header(\'Cache-Control:max-age=2592000\');echo $this->image;

本文地址:https://www.stayed.cn/item/16549

转载请注明出处。

本站部分内容来源于网络,如侵犯到您的权益,请 联系我

我的博客

人生若只如初见,何事秋风悲画扇。