《PHP實(shí)例:PHP文件生成的圖片無法使用CDN緩存的解決方法》要點(diǎn):
本文介紹了PHP實(shí)例:PHP文件生成的圖片無法使用CDN緩存的解決方法,希望對您有用。如果有疑問,可以聯(lián)系我們。
本日發(fā)現(xiàn)線上有個問題,線上一個圖片域名,在前端已經(jīng)加了CDN緩存,不落緩存,則用PHP動態(tài)實(shí)現(xiàn)圖片縮放,但經(jīng)PHP處理過的圖片輸出后,每次都要從后端讀取,后端服務(wù)器壓力瞬間增加,經(jīng)分析,PHP中沒有作304的處理,PHP編程
HTTP的原理是這樣的,每次哀求到服務(wù)器后,服務(wù)端檢測有沒有修改,如沒有修改,可以直接返回一個304的狀態(tài)碼,這樣就用客戶端的緩存了,CDN的原理就是如此,如果設(shè)置了304,就會將相應(yīng)的URL進(jìn)行緩存起來;PHP編程
相關(guān)代碼如下:
PHP編程
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;
PHP編程
其中http頭HTTP_IF_NONE_MATCH,一般是服務(wù)器返回的對某一URL的標(biāo)識,一般用MD5計算,這樣我們檢測MD5值對紕謬,相同就可以返回304了;PHP編程
PS:PHP編程
剛開始抓了半天包,只看到服務(wù)端返回的Etag標(biāo)簽,沒看到客戶端的http頭中If-None-Match,害得在fastcgi.conf.default 中參加如下代碼:
PHP編程
《PHP實(shí)例:PHP文件生成的圖片無法使用CDN緩存的解決方法》是否對您有啟發(fā),歡迎查看更多與《PHP實(shí)例:PHP文件生成的圖片無法使用CDN緩存的解決方法》相關(guān)教程,學(xué)精學(xué)透。維易PHP學(xué)院為您提供精彩教程。
轉(zhuǎn)載請注明本頁網(wǎng)址:
http://www.fzlkiss.com/jiaocheng/10274.html