最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

PHP文件生成的圖片無法使用CDN緩存的解決方法

 更新時(shí)間:2015年06月20日 10:18:27   投稿:junjie  
這篇文章主要介紹了PHP文件生成的圖片無法使用CDN緩存的解決方法,這里的PHP生成圖片是指src地址是一個(gè)PHP文件的圖片,如果不做CDN,服務(wù)器的壓力會(huì)非常大,本文就講解了如何加進(jìn)CDN的方法,需要的朋友可以參考下

今天發(fā)現(xiàn)線上有個(gè)問題,線上一個(gè)圖片域名,在前端已經(jīng)加了CDN緩存,不落緩存,則用PHP動(dòng)態(tài)實(shí)現(xiàn)圖片縮放,但經(jīng)PHP處理過的圖片輸出后,每次都要從后端讀取,后端服務(wù)器壓力瞬間增加,經(jīng)分析,PHP中沒有作304的處理,

HTTP的原理是這樣的,每次請求到服務(wù)器后,服務(wù)端檢測有沒有修改,如沒有修改,可以直接返回一個(gè)304的狀態(tài)碼,這樣就用客戶端的緩存了,CDN的原理就是如此,如果設(shè)置了304,就會(huì)將相應(yīng)的URL進(jìn)行緩存起來;

相關(guān)代碼如下:

復(fù)制代碼 代碼如下:

//檢測有沒改變
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;

其中http頭HTTP_IF_NONE_MATCH,一般是服務(wù)器返回的對某一URL的標(biāo)識,一般用MD5計(jì)算,這樣我們檢測MD5值對不對,相同就可以返回304了;

PS:

剛開始抓了半天包,只看到服務(wù)端返回的Etag標(biāo)簽,沒看到客戶端的http頭中If-None-Match,害得在fastcgi.conf.default 中加入如下代碼:

復(fù)制代碼 代碼如下:

fastcgi_param  CACHE_ETAG    $http_if_none_match;

一打印$_SERVER,根本就沒有CACHE_ETAG這個(gè)變量,看來nginx都會(huì)將相關(guān)的HTTP頭放到$_SERVER變量中,也加深了http協(xié)議的了解

相關(guān)文章

最新評論

德安县| 威远县| 栖霞市| 温泉县| 福海县| 嘉善县| 巍山| 青田县| 固阳县| 明水县| 麻城市| 张掖市| 宣恩县| 黔西县| 宜兰县| 禄丰县| 微山县| 泽库县| 射阳县| 兴城市| 德惠市| 清丰县| 长乐市| 墨竹工卡县| 博野县| 临桂县| 贵定县| 开封县| 苍南县| 黑山县| 白玉县| 喀喇沁旗| 定安县| 耒阳市| 富顺县| 曲阳县| 犍为县| 绥中县| 墨竹工卡县| 隆化县| 鸡西市|