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

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

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

什么是 Etag ?

通過閱讀 RFC 2616 ,得到了對 Etag 的一點印象:

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 本質上說是一種"強校驗器",但是 HTTP 協議提供了一種通過給 Entity tags 打標簽的"弱"的機制(類似于內容的校驗碼).雖然這段話后面通過兩種方式進行了解釋,但是還是有些晦澀.我看了這段話之后只是得出了 Etag 的 "E" 代表 "Entity" 而已.

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

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

http.304.png

如上圖.目前 OpenRSS 雖然訂閱了40 多個 Feed,但是響應速度很不錯.在使用 Gregarius 的過程中(Lilina 也應用了 ETag),發現了 FeedBurnrer 燒錄的 Feed ,幾乎都是用了 Etag 的(否則估計服務器要癱瘓,Hoho).我們再測試一下 HTTP header 的響應情況:

$ 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

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

以上是我的筆記,如有理解錯誤,請指正!

php技術Http 1.1 Etag 與 Last-Modified提高php效率,轉載需保留來源!

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

主站蜘蛛池模板: 欧美日韩高清一区二区三区 | 热九九99香蕉精品品 | 久久91精品国产91 | 美女内射视频WWW网站午夜 | 绞尽奶汁by菊花开 | 曰批视频免费40分钟不要钱 | 无人影院在线播放视频 | 亚洲精品6久久久久中文字幕 | AV色蜜桃一区二区三区 | 18videosex性欧美黑色 | 午夜人妻理论片天堂影院 | 姑娘视频日本在线播放 | 精品国产自在自线官方 | 蜜桃视频无码区在线观看 | 亚洲日韩中文字幕区 | 久久毛片免费看一区二区三区 | 含羞草国产亚洲精品岁国产精品 | 99热久久久无码国产精品性麻豆 | 亚洲成人免费在线 | 俄罗斯freeⅹ性欧美 | 成人手机在线 | H厨房灌草莓 | 久久热国产在线视频 | 色久天| 中国农村妇女真实BBWBBWBBW | 日本电影小姐 | 久久久久综合 | 免费在线观看a视频 | 亚洲精品午夜久久久伊人 | 不卡一区二区高清观看视频 | 99久久免费国产精精品 | 亲女乱h文小兰第一次 | 综合人妻久久一区二区精品 | 国产午夜伦伦伦午夜伦 | 国产网红主播精品福利大秀专区 | 亚洲精品在看在线观看 | 美女扒开腿让男生桶爽免费APP | 小处雏一区二区三区 | 亚洲午夜久久久久中文字幕 | 国产精品久久精品视 | 国内精品日本久久久久影院 |