利用PHP生成的图片无法使用CDN缓存如何解决

介绍

这期内容当中小编将会给大家带来有关利用PHP生成的图片无法使用CDN缓存如何解决,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

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

相关代码如下:

代码如下:


//检测有没改变
如果(收取($ _SERVER [& # 39; HTTP_IF_NONE_MATCH& # 39;])) {
,,,_SERVER $ etag=[& # 39; HTTP_IF_NONE_MATCH& # 39;],
,,,如果(md5 ($ this→图片)===etag美元){
,,,,,,,头(“HTTP/1.1 304 Not Modified");
,,,,,,,退出;
,,,}
}

头(“最后修改:“;。函数的“D, D M Y H:我:s", strtotime (& # 39; 2011 - 1 - 1 & # 39;)) !”GMT");
//输出etag头
头(& # 39;etag: & # 39;。md5 ($ this→图片));
头(& # 39;cache - control:信息=2592000 & # 39;);echo $ this→形象;

其http头中HTTP_IF_NONE_MATCH,一般是服务器返回的对某一网址的标识,一般用md5计算,这样我们检测md5值对不对,相同就可以返回304了;PS:

刚开始抓了半天包,只看到服务端返回的Etag标签,没看到客户端的http头中具有,害得在fastcgi.conf.default中加入如下代码:

代码如下:


fastcgi_param CACHE_ETAG ,,http_if_none_match美元;


一打印$ _SERVER,根本就没有CACHE_ETAG这个变量,看来nginx都会将相关的HTTP头放到$ _SERVER变量中,也加深了HTTP协议的了解

上述就是小编为大家分享的利用PHP生成的图片无法使用CDN缓存如何解决了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注行业资讯频道。

利用PHP生成的图片无法使用CDN缓存如何解决