四虎精品视频-四虎精品成人免费网站-四虎黄色网-四虎国产视频-国产免费91-国产蜜臀97一区二区三区

HTTP Caching 優(yōu)化網(wǎng)站

  HTTP Caching 用好了,可以極大的減小服務(wù)器負(fù)載和減少網(wǎng)絡(luò)帶寬。十分有必要深入了解下 http 的 caching 協(xié)議。

  先來(lái)看下請(qǐng)求/響應(yīng)過(guò)程:

http 請(qǐng)求/響應(yīng)

http 請(qǐng)求/響應(yīng)

  1、用 Last-Modified 頭

  在第一次請(qǐng)求的響應(yīng)頭返回 Last-Modified 內(nèi)容,時(shí)間格式如:Wed, 22 Jul 2009 07:08:07 GMT。是零時(shí)區(qū)的 GMT 時(shí)間,servlet 中可以用 response.addDateHeader ("Last-Modified", date.getTime ()); 加入響應(yīng)頭。如圖:

last-modified 和 If-Modified-Since

last-modified 和 If-Modified-Since

  Last-Modified 與 If-Modified-Since 對(duì)應(yīng)的,前者是響應(yīng)頭,后者是請(qǐng)求頭。服務(wù)器要處理 If-Modified-Since 請(qǐng)求頭與 Last-Modified 對(duì)比看是否有更新,如果沒(méi)有更新就返回 304 響應(yīng),否則按正常請(qǐng)求處理。如果要在動(dòng)態(tài)內(nèi)容中使用它們,那就要程序來(lái)處理了。

  ps:servlet 取 If-Modified-Since 可以用 long last = requst.getDateHeader ("If-Modified-Since");

  2、用 Etag 頭

  很多時(shí)間可能不能用時(shí)間來(lái)確定內(nèi)容是否有更新。那可以用 Etag 頭,etag 是以內(nèi)容計(jì)算一個(gè)標(biāo)識(shí)。計(jì)算的方式可以自己決定,比如可以用 crc32、md5等。

Etag 和 If-None-Match

Etag 和 If-None-Match

  Etag 與 If-None-Match 是對(duì)應(yīng)的,前者是響應(yīng)頭,后者是請(qǐng)求頭。服務(wù)器要判斷請(qǐng)求內(nèi)容計(jì)算得到的 etag 是否與請(qǐng)求頭 If-None-Match 是否一致,如果一致就表示沒(méi)有更新,返回 304 就可,否則按正常請(qǐng)求處理。可以參考:用 HttpServletResponseWrapper 實(shí)現(xiàn) Etag 過(guò)濾器

  3、用 Expires 頭,過(guò)期時(shí)間

  當(dāng)請(qǐng)求的內(nèi)容有 Expires 頭的時(shí)候,瀏覽器會(huì)在這個(gè)時(shí)間內(nèi)不去下載這個(gè)請(qǐng)求的內(nèi)容(這個(gè)行為對(duì) F5 或 Ctrl+F2 無(wú)效,用 IE7,F(xiàn)irefox 3.5 試了,有效的比如:在地址輸入后回車(chē))。

expires 過(guò)期時(shí)間

expires 過(guò)期時(shí)間

  在 servlet 中可以用 response.addDateHeader ("Expires", date.getTime ()); 添加過(guò)期內(nèi)容。

  ps:在 httpwatch 中可以看到 Result 為 (Cached) 狀態(tài)的。

  4、用 max-age 的 Cache-Control 頭

  max-age 的值表示,多少秒后失效,在失效之前,瀏覽器不會(huì)去下載請(qǐng)求的內(nèi)容(當(dāng)然,這個(gè)行為對(duì) F5 或 Ctrl+F2 無(wú)效)。比如:服務(wù)器寫(xiě) max-age 響應(yīng):response.addHeader ("Cache-Control", "max-age=10");

  ps:如果你還要加一些 Cache-Control 的內(nèi)容,比如:private,最好不要寫(xiě)兩個(gè) addHeader,而是一個(gè) response.addHeader ("Cache-Control", "private, max-age=10"); 否則 ie 可能對(duì) max-age 無(wú)效,原因它只讀第一個(gè) Cache-Control 頭。

  小結(jié):

  Last-Modified 與 Etag 頭(即是方式 1 和2)還是要請(qǐng)求服務(wù)器的,只是僅返回 304  頭,不返回內(nèi)容。所以瀏覽怎么 F5 ,304 都是有效的。但用 Ctrl+F5 是全新請(qǐng)求的(這是瀏覽器行為,不發(fā)送緩存相關(guān)的頭)。

  Expires 頭與 max-age 緩存是不需要請(qǐng)求服務(wù)器的,直接從本地緩存中取。但 F5 會(huì)忽視緩存(所以使用 httpwatch 之類(lèi)的 http 協(xié)議監(jiān)察工具時(shí),不要 F5 誤認(rèn)為 Expires 和 max-age 是無(wú)效的)。

  http 協(xié)議監(jiān)察工具:

  Firebox:httpfox、live http header

  IE:httpwatch、iehttpheader

  重要參考文章:How To Optimize Your Site With HTTP Caching

it知識(shí)庫(kù)HTTP Caching 優(yōu)化網(wǎng)站,轉(zhuǎn)載需保留來(lái)源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 凯丽| 林正英电影全部电影作品大全| 大海中的船原唱歌词| 逆光飞翔 电影| 宁死不屈电影免费观看| 发现一个神奇的定胆方法| 艳妇乳肉豪妇荡乳xxx| 爱情电影网aqdy| 小鹏奇啪行| 内战电影免费观看2024年上映| 美少女战士变身| 美国伦理三颗熟樱桃| 洛城僵尸在线观看| 肮脏性感的人| 河中石兽是几年级的课文| 方谬神探 电视剧| 楼下的女邻居| 欲望中的女人电影| 电视剧零下三十八度手机免费观看| 基于plc的毕业设计论文题目 | 重庆新闻频道| 影子是我的好朋友仿句怎么写| 日韩欧美电影在线| 钟思华| 夜魔3| 七年级下册语文谁是最可爱的人笔记 | 荒岛大逃亡电影在线观看| 韩国伦理片在线播放| 手机图标大全| 恋爱症候群| 玉匣记白话全书| 乔治桑| 凌靖| 第一财经在线直播今日股市| 孙苏雅| 卓安律师事务所| 87版七仙女台湾| 我的宇宙| 甜蜜宝贝 电影| 电影《东莞往事》在线观看免费| 熊乃瑾个人资料|