天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

Http 1.1 Etag 與 Last-Modified提高php效率

在 Blog 盛行的今天,一些 Web 應(yīng)用需要解析大量的 RSS Feed .如何提高效率是個(gè)非常重要的問(wèn)題.在 MagpieRSS 的 Features 中列舉了這樣的一條: HTTP Conditional GETs Save bandwidth and speed up download times with intelligent use of Last-Modified and ETag.. 這里的 Etag 引起了我的注意.

什么是 Etag ?

通過(guò)閱讀 RFC 2616 ,得到了對(duì) Etag 的一點(diǎn)印象:

The ETag response-header field provides the current value of the entity tag for the requested variant......Entity tags are normally "strong validators," but the protocol provides a mechanism to tag an entity tag as "weak." One can think of a strong validator as one that changes whenever the bits of an entity changes, while a weak value changes whenever the meaning of an entity changes. Alternatively, one can think of a strong validator as part of an identifier for a specific entity, while a weak validator is part of an identifier for a set of semantically equivalent entities.

從上我們可以大致得知,Entity tags 本質(zhì)上說(shuō)是一種"強(qiáng)校驗(yàn)器",但是 HTTP 協(xié)議提供了一種通過(guò)給 Entity tags 打標(biāo)簽的"弱"的機(jī)制(類似于內(nèi)容的校驗(yàn)碼).雖然這段話后面通過(guò)兩種方式進(jìn)行了解釋,但是還是有些晦澀.我看了這段話之后只是得出了 Etag 的 "E" 代表 "Entity" 而已.

Magpie 首頁(yè)上提到了一篇文章: HTTP Conditional Get for RSS Hackers ,拜讀之后清晰了許多.要先說(shuō)說(shuō) HTTP Conditional GETs 的基本原理,很簡(jiǎn)單,就是說(shuō),從 Web 服務(wù)器取數(shù)據(jù)的時(shí)候,如果文件變化了,給我新的文件,如果文件沒(méi)有變化,只需告訴客戶端沒(méi)有變化即可,不必再把文件取回來(lái).這樣就可節(jié)省大量的網(wǎng)絡(luò)帶寬和資源.

Etag 與 Last-Modified 是從 HTTP 1.0 到 HTTP 1.1 才有的概念.當(dāng)我們從 Web 服務(wù)器獲取文件的時(shí)候,只需要讀取 HTTP 響應(yīng)頭的 Etag 與 Last-Modified 字段即可,這兩個(gè)字段里面的具體內(nèi)容是什么可以不管(可能會(huì)千奇百怪,RFC 2616 對(duì) Etag 沒(méi)有具體值的定義),把這兩個(gè)值 Cache 在本地,下次檢查文件是否更新的時(shí)候比對(duì)這兩個(gè)值即可.如果沒(méi)有變化,服務(wù)器的響應(yīng)代碼不是 HTTP 200 (OK) , 而是 304.

http.304.png

如上圖.目前 OpenRSS 雖然訂閱了40 多個(gè) Feed,但是響應(yīng)速度很不錯(cuò).在使用 Gregarius 的過(guò)程中(Lilina 也應(yīng)用了 ETag),發(fā)現(xiàn)了 FeedBurnrer 燒錄的 Feed ,幾乎都是用了 Etag 的(否則估計(jì)服務(wù)器要癱瘓,Hoho).我們?cè)贉y(cè)試一下 HTTP header 的響應(yīng)情況:

$ curl -I http://feeds.feedburner.com/dbanotesHTTP/1.1 200 OKDate: Tue, 25 Oct 2005 11:34:15 GMTServer: ApacheLast-Modified: Tue, 25 Oct 2005 04:30:12 GMTETag: U4q478bDKLqZ8UMMC8A5afZuHugContent-Type: text/xml;charset=utf-8$ curl -I http://feeds.feedburner.com/dbanotesHTTP/1.1 200 OKDate: Tue, 25 Oct 2005 11:34:21 GMTServer: ApacheLast-Modified: Tue, 25 Oct 2005 04:30:12 GMT ETag: U4q478bDKLqZ8UMMC8A5afZuHugContent-Type: text/xml;charset=utf-8

在這個(gè)期間,我的 Blog 沒(méi)有更新.所以 Last-Modified 和 ETag 返回的都是相同的值.這樣 Gregarius 就不必重新解析了. 國(guó)內(nèi)的 GreatNews 是支持 HTTP Conditional GETs 的,更棒的是還支持 gzip/deflate encoding.而另一個(gè) RSS 閱讀工具 POPU (周博通) 就不知道了.

以上是我的筆記,如有理解錯(cuò)誤,請(qǐng)指正!

php技術(shù)Http 1.1 Etag 與 Last-Modified提高php效率,轉(zhuǎn)載需保留來(lái)源!

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

主站蜘蛛池模板: 免费的好黄的漫画 | 狠狠色狠狠色88综合日日91 | 99久久精品免费国产一区二区三区 | 亚洲国产高清视频在线观看 | 40分钟超爽大片黄 | 免费人成视频X8X8国产更快乐 | 亚洲乱码在线卡一卡二卡新区 | 饱满奶大30p| 国产小伙和50岁熟女23p | 少妇高潮惨叫久久久久久电影 | 久久精品国产清白在天天线 | 天天射天天干天天插 | 国产精品午夜福利在线观看 | 月夜直播免费看 | 亚洲AV无码国产精品色午夜情 | 中文字AV字幕在线观看 | 99久久免费看少妇高潮A片 | 免费一级特黄欧美大片久久网 | 亚洲综合AV色婷婷五月蜜臀 | 无限资源好看片2019免费观看 | 亚洲 欧美 日韩 卡通 另类 | 成人高清护士在线播放 | 不卡一区二区高清观看视频 | https黄视| 精品国产99久久久久久麻豆 | 秋霞久久久久久一区二区 | 久久精品国产清白在天天线 | 男男h啪肉np文总受 男男h开荤粗肉h文1v1 | 国产午夜精品片一区二区三区 | 色琪琪无码成人AV视频 | 豆奶视频在线高清观看 | 狠狠躁日日躁人人爽 | 2020无码最新国产在线观看 | 潮 喷女王cytherea| 精品久久免费视频 | 97人视频国产在线观看 | 国产精品一区二区在线观看 | 国产精品久久久久影院免费 | 久久精品国产视频澳门 | 日日碰狠狠添天天爽 | 免费99精品国产自在现线 |