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

首頁 > 開發(fā) > PHP > 正文

php 瀏覽器緩存

2024-05-04 21:48:55
字體:
供稿:網(wǎng)友

瀏覽器緩存,就完全不是那么回事了,緩存內(nèi)容存儲在瀏覽器本地,而內(nèi)容卻由web服務(wù)器生成,任何一方都不可能獨(dú)立完成這一系統(tǒng)過程,所以它們之間必須有一種溝通機(jī)制,這就是http中的“緩存協(xié)商”。

我們先來看一個通常的http請求:

  1. host   m.survivalescaperooms.com 
  2. user-agent         mozilla/5.0 (windows; u; windows nt 6.1; zh-cn; rv:1.9.2.9) gecko/20100824 firefox/3.6.9        firephp教程/0.4 
  3. accept         text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 
  4. accept-language         zh-cn,zh;q=0.5 
  5. accept-encoding         gzip,deflate 
  6. accept-charset         gb2312,utf-8;q=0.7,*;q=0.7 
  7. keep-alive         115 //開源代碼Vevb.com 
  8. connection         keep-alive 

上面就是一個普通的http請求,為了實(shí)現(xiàn)在瀏覽器緩存控制,我們需要了解http響應(yīng)頭中的四種標(biāo)記:

last-modified:最后修改gmt時間

etag:通過一串編碼來標(biāo)記內(nèi)容是否更改過

expires:指定一個過期gmt時間

cache-control:mag-age=相對于瀏覽器本地的過期秒數(shù),可避免服務(wù)器時間不正確的情況下同樣起作用.

http返回的狀態(tài)代碼:

200——請求成功

304——客戶端已經(jīng)執(zhí)行了get,但文件未變化

400——錯誤請求,如語法錯誤

500——服務(wù)器產(chǎn)生內(nèi)部錯誤

501——服務(wù)器不支持請求的函數(shù)

以下代碼使用了以上四種方法來控制瀏覽器內(nèi)容緩存一個小時,如果在一小時之內(nèi)則立即返回304狀態(tài)碼通知瀏覽器使用本地的內(nèi)容,這將節(jié)省服務(wù)器程序執(zhí)行時間,網(wǎng)絡(luò)傳輸時間,僅返回一個頭文件.

  1. $modified_time = $_server['http_if_modified_since']; 
  2. if (strtotime($modified_time) + 3600 > time()) { 
  3. header("http/1.1 304"); 
  4. exit(0); 
  5. header("last-modified:" . gmdate("d, d m y h:i:s") . "gmt"); 
  6. header("expires:" . gmdate("d, d m y h:i:s", time() + 3600) . "gmt"); 
  7. header("cache-control: max-age=3600"); 

特別需要說明一下的是:expires需要服務(wù)器商支持expires模塊默認(rèn)情況下是不會開啟,使用以下命令即可:

  1. a2enmod expires         //啟用expires模塊 
  2. /etc/init.d/apache2 restart        //重啟apache服務(wù) 
  3. 我們還可以通過修改http.conf配置中: 
  4. expiresactive        on expiresbytype image/gif “access plus 1 month” expiresbytype text/css “now plus 2 day” expiresdefault         “now plus 1 day”  

以上是針對靜態(tài)內(nèi)容的mime類型來設(shè)置過期時間,因?yàn)槲覀儫o法給靜態(tài)文件直接指定一個絕對到期時間,所以采用”access plus”式的語法,由web服務(wù)器在該內(nèi)容被請求的時候動態(tài)計(jì)算一個絕對到期時間,作為expires標(biāo)記的內(nèi)容.

值得一提的是,對于常見的靜態(tài)文件格式,即便是web服務(wù)器返回http響應(yīng)頭中沒有expires標(biāo)記,瀏覽器也會根據(jù)一些其它線索猜測一個過期時間,比如ie在某種緩存模式下,對于gif圖片設(shè)置為永不過期,除非我們配置expires為馬上過期,也就是將過期時間設(shè)置為當(dāng)前時間或者0.

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 奉节县| 百色市| 利川市| 遂宁市| 桐乡市| 尤溪县| 海口市| 合川市| 介休市| 永德县| 安泽县| 宜章县| 大英县| 田林县| 永州市| 开化县| 息烽县| 丰原市| 慈溪市| 岱山县| 洛南县| 淅川县| 房山区| 定安县| 新乐市| 道孚县| 土默特右旗| 雷波县| 鄂温| 卢龙县| 南京市| 淳安县| 郴州市| 富宁县| 辽宁省| 鄄城县| 鹿泉市| 当涂县| 瑞安市| 襄城县| 利川市|