雅虎优化ETags

雅虎优化ETagsETags为网页资源的优化又提供了一个便捷的方案。ConfigureETagstag:serverEntitytags(ETags)areamechanismthatwebserversandbrowsersusetodeterminewhetherthecomponentinthebrowser'scachematchest

大家好,又见面了,我是你们的朋友全栈君。

ETags 为网页资源的优化又提供了一个便捷的方案。

Configure ETags

tag: server

Entity tags (ETags) are a mechanism that web servers and browsers use to determine whether the component in the browser's cache matches the one on the origin server. (An “entity” is another word a “component”: images, scripts, stylesheets, etc.) ETags were added to provide a mechanism for validating entities that is more flexible than the last-modified date. An ETag is a string that uniquely identifies a specific version of a component. The only format constraints are that the string be quoted. The origin server specifies the component's ETag using the ETag response header.

      HTTP/1.1 200 OK
      Last-Modified: Tue, 12 Dec 2006 03:03:59 GMT
      ETag: "10c24bc-4ab-457e1c1f"
      Content-Length: 12195

 

Later, if the browser has to validate a component, it uses the If-None-Match header to pass the ETag back to the origin server. If the ETags match, a 304 status code is returned reducing the response by 12195 bytes for this example.

      GET /i/yahoo.gif HTTP/1.1
      Host: us.yimg.com
      If-Modified-Since: Tue, 12 Dec 2006 03:03:59 GMT
      If-None-Match: "10c24bc-4ab-457e1c1f"
      HTTP/1.1 304 Not Modified

 

The problem with ETags is that they typically are constructed using attributes that make them unique to a specific server hosting a site. ETags won't match when a browser gets the original component from one server and later tries to validate that component on a different server, a situation that is all too common on Web sites that use a cluster of servers to handle requests. By default, both Apache and IIS embed data in the ETag that dramatically reduces the odds of the validity test succeeding on web sites with multiple servers.

The ETag format for Apache 1.3 and 2.x is inode-size-timestamp. Although a given file may reside in the same directory across multiple servers, and have the same file size, permissions, timestamp, etc., its inode is different from one server to the next.

IIS 5.0 and 6.0 have a similar issue with ETags. The format for ETags on IIS is Filetimestamp:ChangeNumber. A ChangeNumber is a counter used to track configuration changes to IIS. It's unlikely that the ChangeNumber is the same across all IIS servers behind a web site.

The end result is ETags generated by Apache and IIS for the exact same component won't match from one server to another. If the ETags don't match, the user doesn't receive the small, fast 304 response that ETags were designed for; instead, they'll get a normal 200 response along with all the data for the component. If you host your web site on just one server, this isn't a problem. But if you have multiple servers hosting your web site, and you're using Apache or IIS with the default ETag configuration, your users are getting slower pages, your servers have a higher load, you're consuming greater bandwidth, and proxies aren't caching your content efficiently. Even if your components have a far future Expires header, a conditional GET request is still made whenever the user hits Reload or Refresh.

If you're not taking advantage of the flexible validation model that ETags provide, it's better to just remove the ETag altogether. The Last-Modified header validates based on the component's timestamp. And removing the ETag reduces the size of the HTTP headers in both the response and subsequent requests. This Microsoft Support article describes how to remove ETags. In Apache, this is done by simply adding the following line to your Apache configuration file:

      FileETag none
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/158653.html原文链接:https://javaforall.net

(0)
上一篇 2022年7月13日 上午8:00
下一篇 2022年7月13日 上午8:00


相关推荐

  • 免杀工具下载_360免杀器

    免杀工具下载_360免杀器今天有一点想你,其实,不止一点,其实,不止今天。。。​—-网易云热评一、简介快速生成免杀exe可执行文件,目前拥有三种免杀的方法二、下载及安装1、下载到本地gitclonehttps://github.com/lengjibo/FourEye.git2、进入该文件夹cdFourEye3、安装需要的python库pipinstall-rrequirements.txt三、使用方法1、打开该软件python3Byp…

    2022年8月20日
    16
  • 双三次插值法

    双三次插值法是常用的一种插值方法 常用于图像或者视频的缩放 假设将图像 A 缩放为图像 B

    2026年3月19日
    2
  • php开发微信公众号步骤_微信公众平台php对接

    php开发微信公众号步骤_微信公众平台php对接1.SAE数据库的连接。需要主机名和端口,以后的使用是一样的。@$db=newmysqli(SAE_MYSQL_HOST_M.’:’.SAE_MYSQL_PORT,SAE_MYSQL_USER,SAE_MYSQL_PASS,’你的应用名’);2.XML的处理。微信发送的消息格式都是XML格式,你返回的消息也必须是XML格式。从XML里提取数据,用SimpleXML,强大…

    2022年8月21日
    10
  • 【数学建模】元胞自动机

    【数学建模】元胞自动机最初的元胞自动机是由冯 诺依曼在 1950 年代为模拟生物细胞的自我复制而提出的 但是并未受到学术界重视 1970 年 剑桥大学的约翰 何顿 康威设计了一个电脑游戏 生命游戏 后 元胞自动机才吸引了科学家们的注意 1983 年 S Wolfram 发表了一系列论文 对初等元胞机 256 种规则所产生的模型进行了深入研究 并用熵来描述其演化行为 将细胞自动机分为平稳型 周期型 混沌型和复杂型 A 应用社会学 元胞自动机经常用于研究个人行为的社会性 流行现象

    2026年3月19日
    2
  • SQL Server 中的逻辑读与物理读

    SQL Server 中的逻辑读与物理读

    2021年11月24日
    54
  • float强转int

    float强转int本文只讨论 float 转 int 的原理 如有不当之处 欢迎留言指出 交流学习 推荐阅读关于 float 转 int 的函数实现 非结构体实现版 类型强转丢失精度的根源目录一 思路 1 1 十进制 1 2 二进制 1 3 处理棘手的符号位 1 4 小端模式二 C 语言实现 2 1 思路 2 2 利用结构体实现 2 3 利用内存拷贝函数 memcpy 实现一 思路 1 1 十

    2026年3月18日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号