在 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.

etag php,Http 1.1 Etag 与 Last-Modified提高php效率相关推荐

  1. php设置etag,PHP操作http中Etag、lastModified和Expires标签

    客户端通过浏览器发出第一次请求某一个URL时,根据 HTTP 协议的规定,浏览器会向服务器传送报头(Http Request Header),服务器端响应同时记录相关属性标记(Http Reponse ...

  2. etag php,为什么要关闭ETag?

    我在给自己的独立博客做SEO的过程中,通过网络学习了很多知识,其中关于Apache的配置方面,很多文章都在说要关闭ETag,但是它们大都是直接说关闭ETag,没有说明为什么要关闭ETag?今天,麦新杰 ...

  3. etag java_RXJava中如何使用ETag缓存

    还是启动图的问题,上一个版本使用队列缓存启动图,但是ios端总是出问题,不得已,在这一版中,后台又重现制定了启动图显示加载规则,于是就有了这篇博文. ETag字符串通常是用来标记服务器缓存的,当客户端 ...

  4. HTTP协议Etag详解

    HTTP协议规格说明定义ETag为"被请求变量的实体值". 另一种说法是,ETag是一个可以与Web资源关联的记号(token).典型的Web资源可以一个Web页,但也可能是JSO ...

  5. http响应Last-Modified和ETag以及Apache和Nginx中的配置

    基础知识 1) 什么是"Last-Modified"? 在浏览器第一次请求某一个URL时,服务器端的返回状态会是200,内容是你请求的资源,同时有一个Last-Modified的属 ...

  6. expires与etag控制页面缓存的优先级

    expires指令控制HTTP应答中的"Expires"和"Cache-Control"Header头部信息,启动控制页面缓存的作用 time:可以使用正数或负 ...

  7. 在你的 Rails App 中开启 ETag 加速页面载入同时节省资源

    转自http://huacnlee.com/blog/use-etag-in-your-rails-app-to-speed-up-loading/ 什么是 ETag 网上关于 ETag 的解释有很多 ...

  8. (chap6 Http首部) 响应首部字段 Accept-RangeAge Etag

    响应首部字段是由服务器端向客户端返回响应报文中所使用的字段,用于补充响应的附加信息.服务器信息,以及对客户端的附加要求等信息. 1. Accept-Range 告知客户端服务器是否能处理范围请求,字段 ...

  9. SAP OData 后台ETAG校验逻辑

    Created by Jerry Wang, last modified on Jul 27, 2015 修改了lead的数据之后点击save button,首先从后台重新读取一次lead的数据: 将 ...

最新文章

  1. GZip压缩与解压缩
  2. Oracle10g 管理系统全局区(SGA)
  3. 跟我学JAVA / 第三课:Java流程控制与数组
  4. Gym-100676E Time Limit Exceeded?
  5. 分页缓冲池如何关闭_线程池没你想的那么简单
  6. 计算机视觉课_计算机视觉教程—第4课
  7. 类级别的分装 ---四种访问级别
  8. 年轻10岁简单又易行的妙方
  9. 一文详解深度学习在命名实体识别(NER)中的应用
  10. java英语词汇_java常用的英语单词
  11. source code of MES Data
  12. python画画用哪库好_学Python画画:应用Turtle库画一个蠢萌的小黄人
  13. C++之构造函数、(构造)函数重载探究
  14. 网络收包流程-网络层处理流程ip_rcv(五)
  15. python 分词字典的词性_NLP注2“自定义词性与词典实现”,笔记,字典,的
  16. 18 在springboot整合thymeleaf模板引擎中@Controller和@RestController不同注解的跳转页面方法
  17. 平面设计【PS】汉堡寿司横幅PSD分层模版素材
  18. 10-230 查询计算机工程专业学生选修但软件工程专业学生没有选修的课程
  19. 包,内部类,常用类,集合
  20. 铝板展开插件_钣金件快速绘图与展开程序CAD插件(钣金展开插件工具)Vr2.10 最新版...

热门文章

  1. WebGoatV8.1(A8 2013Request Forgery)详细过关教程
  2. CentOS 7 安装惠普打印机驱动
  3. CSP-何以包邮?(暴力DFS、背包问题)
  4. 算法题常用技巧C++
  5. 正常血压(YZOJ-1078)
  6. oracle imp ora 00959,Oracle导入dmp文件时出现了IMP-00038和ora-00959
  7. 服务器配置lxc管理
  8. 分页插件Pagehelper
  9. fake-useragent Maximum amount of retries reached解决方案
  10. Mysql中 /*[叹号] */含义