PHP文件生成的图像不能使用CDN缓存解决方案。
HTTP的原理就是这样,每个请求到服务器,服务器的检测没有被修改,如果没有修改,可以直接返回一个304状态码,比如使用客户端的缓存,CDN的原理就是,如果你设置了304,就会是相应的url缓存;
相关代码如下:
复制代码代码如下所示:
没有变化/检测
如果(isset($ _server { 'http_if_none_match ' })){
它_server美元美元= 'http_if_none_match'} {;
如果(MD5(美元->图像)= $ Etag){
标题(1.1 304未修改);
出口;
}
}
标题(最后修改:。gmdate(D、D M Y H:我:S
输出 / / ETag头
头('etag:'。MD5($ >图像);
头('cache-control:最大年龄= 2592000);echo $这->图像;
其中,HTTP头http_if_none_match通常是鉴定一个URL服务器返回的。它通常用MD5计算。所以我们检测到MD5值,对,同样可以返回304。
PS:
刚开始一天半袋,看到它的标签返回的服务器,并没有看到如果在客户端的HTTP头不匹配,所以添加以下代码到fastcgi.conf.default。
复制代码代码如下所示:
fastcgi_param cache_etag http_if_none_match美元;
印刷时_server美元,根本没有cache_etag变量。看来,Nginx会把相关的HTTP头为_server变量,也深化了HTTP协议的理解。