`

【转帖】HTTP缓存ETAG和Last-Modified

阅读更多
原帖地址:http://lkf0217.iteye.com/blog/544200

基础知识
        1) 什么是”Last-Modified”?

        在浏览器第一次请求某一个URL时,服务器端的返回状态会是200,内容是你请求的资源,同时有一个Last-Modified的属性标记此文件在服务期端最后被修改的时间,格式类似这样:

        Last-Modified: Fri, 12 May 2006 18:53:33 GMT

        客户端第二次请求此URL时,根据 HTTP 协议的规定,浏览器会向服务器传送 If-Modified-Since 报头,询问该时间之后文件是否有被修改过:

        If-Modified-Since: Fri, 12 May 2006 18:53:33 GMT

        如果服务器端的资源没有变化,则自动返回 HTTP 304 (Not Changed.)状态码,内容为空,这样就节省了传输数据量。当服务器端代码发生改变或者重启服务器时,则重新发出资源,返回和第一次请求时类似。从而保证不向客户端重复发出资源,也保证当服务器有变化时,客户端能够得到最新的资源。

        2) 什么是”Etag”?

        HTTP 协议规格说明定义ETag为“被请求变量的实体值” (参见 —— 章节 14.19)。 另一种说法是,ETag是一个可以与Web资源关联的记号(token)。典型的Web资源可以一个Web页,但也可能是JSON或XML文档。服务器单独负责判断记号是什么及其含义,并在HTTP响应头中将其传送到客户端,以下是服务器端返回的格式:

        ETag: "50b1c1d4f775c61:df3"

        客户端的查询更新格式是这样的:

        If-None-Match: W/"50b1c1d4f775c61:df3"

        如果ETag没改变,则返回状态304然后不返回,这也和Last-Modified一样。本人测试Etag主要在断点下载时比较有用。
       
      Last-Modified和Etags如何帮助提高性能?
        聪明的开发者会把Last-Modified 和ETags请求的http报头一起使用,这样可利用客户端(例如浏览器)的缓存。因为服务器首先产生 Last-Modified/Etag标记,服务器可在稍后使用它来判断页面是否已经被修改。本质上,客户端通过将该记号传回服务器要求服务器验证其(客户端)缓存。
        过程如下:
                1. 客户端请求一个页面(A)。
                2. 服务器返回页面A,并在给A加上一个Last-Modified/ETag。
                3. 客户端展现该页面,并将页面连同Last-Modified/ETag一起缓存。
                4. 客户再次请求页面A,并将上次请求时服务器返回的Last-Modified/ETag一起传递给服务器。
                5. 服务器检查该Last-Modified或ETag,并判断出该页面自上次客户端请求之后还未被修改,直接返回响应304和一个空的响应体。
分享到:
评论

相关推荐

    转帖经典---JAVA设计模式

    Java设计模式是软件开发中的重要概念,它是一种在特定情境下解决常见问题的经验总结和最佳实践。这些模式为程序员提供了一种标准化的方式,以便在面向对象编程中有效地组织和构建代码,提高代码的可读性、可维护性和...

    论坛转帖工具.rar

    标题中的“论坛转帖工具.rar”表明这是一个用于在论坛之间转移帖子的软件工具,通常用于帮助用户方便地将一个论坛的帖子内容复制到另一个论坛,可能是为了分享信息、讨论或保存重要的帖子。这类工具可能包括自动抓取...

    浮点栈结构(转帖) - 大呵呵 - 博客园_float_floatregister_

    浮点栈结构是计算机科学中的一个重要概念,尤其是在处理器架构和编程语言实现中。本文将深入探讨浮点栈结构,特别是Intel CPU中的浮点寄存器(Float Register)使用情况。 浮点栈结构主要指的是用于存储浮点数值的...

    转帖--oracle分析函数+PLSQL小结

    - FIRST_VALUE() 和 LAST_VALUE():返回指定列的第一个或最后一个非空值。 - NTILE():将结果集分成指定数量的桶(tiles),每行被分配到一个桶。 - AVG(), SUM(), COUNT(), MAX(), MIN():这些聚合函数也有分析...

    贴吧转帖工具

    通过这款工具,用户可以实现一键转帖和一键8经验签到的功能,极大地简化了传统操作流程,节省了用户的时间,提升了用户体验。 一键转帖功能是该工具的核心亮点。它允许用户快速地将一篇帖子从一个贴吧复制并发布到...

    UBB论坛转帖圣手.exe

    UBB论坛转帖圣手.exeUBB论坛转帖圣手.exe

    运放参数的详细解释和分析-转帖TI工作人员的资料(doc版)

    在TI论坛看到的帖子,感觉挺好,就整理成word文档了,内容主要是运放datasheet常见参数的解释和分析。TI原帖地址“http://www.deyisupport.com/question_answer/analog/amplifiers/f/52/t/20214.aspx”。感谢原作者...

    [转帖]世界编程大赛第一名写的程序

    标题和描述中的“世界编程大赛第一名写的程序”这一知识点,实际上指向了计算机科学与编程竞赛领域的一个重要概念:即在高水平的编程比赛中,优胜者所编写的代码往往蕴含着高级算法、数据结构以及编程技巧。...

    编辑人员转帖去水印工具

    总之,编辑人员转帖去水印工具如Teorex Inpaint,为图像编辑提供了便利,通过其独特的算法和技术,我们可以高效地去除图片中的水印,提高内容的质量。但在使用过程中,务必遵守版权法和相关法律法规,以维护良好的...

    Html2UBBMaxcj_Softii论坛专用转帖工具

    HTML2UBBMaxcj 是一款专为Softii论坛设计的转帖工具,它主要用于将HTML格式的帖子内容转换成UBB代码,以便在论坛中更好地显示和分享。UBB(Universal BBCode)是一种轻量级的标记语言,常用于网络论坛,与HTML类似,...

    一键转帖功能插件 for 帝国CMS 6.0 GBK utf8 V1.0.rar

    这是为了让系统能够识别和调用这两个文件,以便实现一键转帖的功能。 2. **插入代码**:在内容页的适当位置,需要添加HTML.TXT文件中的代码。这通常是在文章内容下方或者侧边栏等显眼位置,以方便用户快速找到并...

    discuz X2转帖工具、采集工具

    X2转帖工具、采集工具”是针对这个平台设计的辅助软件,主要用于帮助论坛管理员或用户批量发布帖子和采集内容,提高论坛内容更新的效率。 一、批量发帖功能 1. 自动化发布:此工具可以自动化地创建和发布帖子,...

    H42131-转帖《关于用净值计算法计算收益》.doc

    H42131-转帖《关于用净值计算法计算收益》.doc

    2021-2022年收藏的精品资料转帖经济学资源.doc

    【标题】:“2021-2022年收藏的精品资料转帖经济学资源.doc” 【描述】:“精品教育教学资料” 这篇文档整理了2021至2022年间收集的一些高质量经济学教育资源,主要关注的是综合性的经济学研究领域。这些资料对于...

    转帖工具插件 for PHPwind 7.5 正式版.rar

    4. **日志记录**:为了便于管理和跟踪,插件可能还会记录转帖操作,生成日志供管理员查看,以便了解转帖历史和排查问题。 5. **兼容性**:作为正式版插件,它应该经过了严格的测试,与 PHPwind 7.5 版本保持良好的...

    一键转帖功能插件 for 帝国CMS v1.0.rar

    总结一下,"一键转帖功能插件 for 帝国CMS v1.0" 提供了一种便捷的方式来增强帝国CMS站点的社交分享功能,通过简单的安装和配置,用户可以轻松地在多个平台上转发内容,有助于增加网站的曝光度和用户的参与度。...

    转帖工具ConvertX fordiscuz7.1/7.2 修改增强版.rar

    4.cookie记录替换和新增关键词(避免每次打开转帖工具都要输入繁琐的替换关键词) 5.新增按颜色屏蔽干扰码 6.新增减少缩进以及优化了首行缩进 7.优化一些小细节 8.重新布局优化显示及方便操作 9.不断更新中...

    轻松转帖之突破网页复制限制宣贯.pdf

    UBB转帖王是一种插件,它能够帮助用户快速去除复制下来的网页内容中的无用空格、文字干扰码、水印和空行等,优化复制内容,便于分享和阅读。 【其他浏览器解决方案】 除了火狐,其他浏览器如搜狗、遨游和世界之窗也...

    转帖PLCDCSFCS三大控制系统的特点和差异.doc

    转帖PLCDCSFCS三大控制系统的特点和差异 PLC、DCS、FCS 三大控制系统是自动化技术中的热点,各有其特点和差异。下面对这三大控制系统的特点和差异进行分析。 1.PLC(Programmable Logic Controller) PLC 是一种...

    用PHP批量生成图片缩略图——活跃论坛转帖

    在论坛转帖的场景下,这个过程可能会更复杂,因为需要考虑图片的显示顺序、缓存策略、错误处理等因素。例如,可能需要在数据库中记录每个图片的缩略图路径,以便快速加载,同时处理上传失败或网络中断的情况。 总的...

Global site tag (gtag.js) - Google Analytics