`

对 HTTP 304 的理解(转)

    博客分类:
  • HHTP
 
阅读更多
最近和同事一起看Web的Cache问题,又进一步理解了 HTTP 中的 304 又有了一些了解。

304 的标准解释是:Not Modified 客户端有缓冲的文档并发出了一个条件性的请求(一般是提供If-Modified-Since头表示客户只想比指定日期更新的文档)。服务器告诉客户,原来缓冲的文档还可以继续使用。

如 果客户端在请求一个文件的时候,发现自己缓存的文件有 Last Modified ,那么在请求中会包含 If Modified Since ,这个时间就是缓存文件的 Last Modified 。因此,如果请求中包含 If Modified Since,就说明已经有缓存在客户端。只要判断这个时间和当前请求的文件的修改时间就可以确定是返回 304 还是 200 。对于静态文件,例如:CSS、图片,服务器会自动完成 Last Modified 和 If Modified Since 的比较,完成缓存或者更新。但是对于动态页面,就是动态产生的页面,往往没有包含 Last Modified 信息,这样浏览器、网关等都不会做缓存,也就是在每次请求的时候都完成一个 200 的请求。
因此,对于动态页面做缓存加速,首先要在 Response 的 HTTP Header 中增加 Last Modified 定义,其次根据 Request 中的 If Modified Since 和被请求内容的更新时间来返回 200 或者 304 。虽然在返回 304 的时候已经做了一次数据库查询,但是可以避免接下来更多的数据库查询,并且没有返回页面内容而只是一个 HTTP Header,从而大大的降低带宽的消耗,对于用户的感觉也是提高。
当这些缓存有效的时候,通过 HttpWatch 查看一个请求会得到这样的结果:
第一次访问 200
鼠标点击二次访问 (Cache)
按F5刷新 304
按Ctrl+F5强制刷新 200
如果是这样的就说明缓存真正有效了。以上就是我对 HTTP 304 的一个理解。
原帖:http://bulaoge.com/topic.blg?dmn=webdev&tid=301677
分享到:
评论

相关推荐

    usr-TCP232-304-software

    本文将深入探讨USR-TCP232-304的软件设计与应用,旨在帮助用户更好地理解和使用这款产品。 一、USR-TCP232-304简介 USR-TCP232-304是一个专为串口设备设计的网络模块,其主要功能是将传统的RS-485串行通信转化为...

    libtesseract304.dll和liblept172.dll.rar

    libtesseract304.dll和liblept172.dll是OCR软件Tesseract的重要组成部分,对于理解和使用Tesseract OCR系统有着深远的影响。 首先,我们来深入了解一下libtesseract304.dll。这是一个动态链接库文件,属于开源OCR...

    gdal源码241,304合集

    GDAL 241和304之间的差异可能包括对新的数据格式的支持、改进的API接口、更高效的算法,或者对现有问题的修复。 GDAL的源码是用C++编写的,对于开发者来说,拥有源码意味着可以深入理解其内部工作原理,定制特定的...

    Azure 304学习资料+复习+备考

    学习过程中,考生应该通过模拟试题、案例研究和实践项目来加深对这些概念的理解,并准备应对实际考试中可能出现的各种场景。此外,访问官方文档、微软的学习路径和社区论坛也是获取最新信息和经验分享的有效途径。

    BITEK BIT1802A Demo Board schematic/PCB v304

    2. BIT1802_DMB_V305.pcb:这可能是PCB设计的另一个版本,版本号为V305,可能是对V304的更新或改进。通常,不同的版本意味着在设计过程中进行了修改或优化。 3. bit1802_dmb_v304.pdf:这个文件可能是电路图或PCB...

    USR-TCP232-304_AT_V2.0.zip

    M0系列是ARM Cortex-M0内核的低功耗微控制器,适合于这类对成本和功耗敏感的应用。这个文件很可能包含了针对M0系列芯片的AT指令手册,详细列出了如何通过这些指令来配置模块的网络参数、波特率、连接模式等。 AT...

    有人串口转网口.rar

    描述中提到的“有人串口转网口的配套资料”,暗示了压缩包内可能包含了一些与这种转换器相关的文档,如用户手册、规格书、软件驱动等,帮助用户理解和使用该产品。 从标签和压缩包子文件的文件名称列表来看,我们...

    基于MATLAB 的304 不锈钢点蚀行为电化学噪声特征.pdf

    综上所述,基于MATLAB的304不锈钢点蚀行为电化学噪声特征研究,不仅深化了我们对304不锈钢腐蚀机制的理解,还展示了MATLAB在电化学研究中的强大功能。这种分析方法对于腐蚀科学的研究及工业实践中材料的腐蚀控制具有...

    304.加勒特复合固定式发动机.rar

    设计图纸则提供了每个部件的精确尺寸和装配细节,这些细节不仅对理解各部件功能至关重要,而且为工程计算和性能分析提供了坚实的基础。 通过使用三维模型,用户可以进行旋转、缩放等操作,从任意角度观察发动机内部...

    304钢方管理论重量

    总的来说,理解和掌握这些计算公式对工程师、采购人员或材料管理人员来说是至关重要的,尤其是在进行项目预算和物料管理时。虽然这不是典型的IT知识,但理解数据处理和基本的数学计算对任何行业都有帮助。

    信捷 DP-304步进驱动器用户手册.rar

    为使用户更好地理解DP-304的使用场景,手册通常会提供一些实际的应用案例,如在数控机床、自动化生产线、3D打印机等设备中的应用,以帮助用户在具体项目中灵活运用。 七、安全注意事项 手册的开头部分会强调使用...

    hibernate转换编码配置和权限及java代码

    然而,在某些情况下,合理地利用缓存(如使用HTTP的304 Not Modified状态码或者Etag、Last-Modified头)可以显著提升用户体验。 对于Hibernate本身,它支持二级缓存,通过集成如EHCache或Infinispan等缓存系统,...

    行业资料-电子功用-使用旋转电弧和ArHeCOsub2sub气体混合物对不锈钢的MIGMAG焊接的说明分析.rar

    例如,304和316不锈钢因其含有的铬和镍元素,需要采取适当的焊接参数和保护措施,以保持其耐腐蚀特性。在使用旋转电弧和ArHeCO2气体混合物时,应根据不锈钢的类型调整焊接电流、电压、焊接速度以及气体流量等参数,...

    rinex3_RINEX3.04_rinex3.04pdf_rinex3.04pdf_rinex3.04

    10. **处理流程**:从获取原始数据到解析RINEX文件,再到进行精密定位或动态跟踪,每个步骤都需要对RINEX格式有深入的理解。 通过阅读rinex304.pdf文档,可以深入了解RINEX 3.04的具体细节,包括新的特性和改进,这...

    USB转串口线HL-340驱动

    USB转串口线 HL-340 驱动程序是一种关键的技术组件,它使得计算机可以通过USB接口与采用串行通信协议的设备进行...通过理解其工作原理和安装过程,用户可以更有效地解决与这类硬件相关的技术问题,确保设备的正常运行。

    基于MATLAB的304不锈钢点蚀行为电化学噪声特征.pdf

    标题和描述中的知识点主要涉及了MATLAB软件在分析304不锈钢点蚀行为中电化学噪声特征的研究应用,具体的知识点分析如下: 首先,文章的主题是研究304不锈钢在特定浓度的NaCl溶液中的腐蚀行为。腐蚀问题是材料科学和...

Global site tag (gtag.js) - Google Analytics