国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 網站 > 建站經驗 > 正文

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

2019-11-02 15:06:33
字體:
來源:轉載
供稿:網友

   這篇文章主要介紹了PHP文件生成的圖片無法使用CDN緩存的解決方法,這里的PHP生成圖片是指src地址是一個PHP文件的圖片,如果不做CDN,服務器的壓力會非常大,本文就講解了如何加進CDN的方法,需要的朋友可以參考下

  今天發現線上有個問題,線上一個圖片域名,在前端已經加了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

男生網名[www.la240.com/html2017/1/12/]
");

  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,一般是服務器返回的對某一URL的標識,一般用MD5計算,這樣我們檢測MD5值對不對,相同就可以返回304了;

  PS:

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

  復制代碼 代碼如下:

  fastcgi_param CACHE_ETAG $http_if_none_match;

  一打印$_SERVER,根本就沒有CACHE_ETAG這個變量,看來nginx都會將相關的HTTP頭放到$_SERVER變量中,也加深了http協議的了解

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 镇原县| 亳州市| 瓮安县| 永清县| 阿拉善盟| 兴安盟| 武强县| 阿荣旗| 台中县| 报价| 驻马店市| 疏附县| 威宁| 阿合奇县| 和田县| 临城县| 乌审旗| 孟州市| 镶黄旗| 庆云县| 武乡县| 谢通门县| 天祝| 乌兰浩特市| 潍坊市| 兴义市| 建平县| 成安县| 个旧市| 连南| 儋州市| 牟定县| 合肥市| 舞钢市| 湖北省| 长白| 平顺县| 新民市| 宝清县| 徐闻县| 都匀市|