原帖地址:http://bulaoge.net/topic.blg?dmn=webdev&tid=301677
最近和同事一起看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 的一个理解。
分享到:
相关推荐
首先,我们要理解什么是水印。水印通常是指在图像或视频中添加的半透明标记,它可以是文字、图案或者logo,目的是为了表明作品的归属或保护原创性。然而,在某些情况下,这些水印可能影响了内容的美观度或需要被去除...
【绿易贴吧工具3.7 11.11版.rar】是这个转帖工具的特定版本,其中"3.7"代表软件的版本号,这通常是开发者对软件进行改进和优化后的标识,"11.11"可能指的是该版本的发布日期,如2021年11月11日。".rar"则表明文件是...
例如,ACM-ICPC(国际大学生程序设计竞赛)被誉为编程界的奥林匹克,它要求参赛团队在5小时内解决10到13个复杂的问题,这不仅是对技术的挑战,也是对团队协作和压力管理能力的考验。 让我们进一步探讨这一知识点...
安装这个插件非常简单,因为开发者已经考虑到了用户的便捷性,用户不需要对 PHPwind 的核心代码进行任何修改。这通常意味着插件遵循了 PHPwind 的标准接口和规范,通过上传即可实现安装。在 PHPwind 管理后台,用户...
3. **重新生成页面**:完成上述步骤后,为了确保新添加的功能生效,需要对内容页进行重新生成。这样,新插入的转帖按钮将出现在已生成的页面中,等待用户使用。 该插件的工作原理主要是通过JavaScript(`copyto.js`...
"一键转帖功能插件 for 帝国CMS v1.0.rar" 是一个专为帝国CMS设计的扩展工具,其主要目标是简化用户在网站上分享内容的过程,提高用户体验。这个插件允许用户轻松地将网站上的文章或信息复制并转发到其他平台,如...
Google需要时间来分析和理解页面的价值,尤其是在标题变化后。只有当网站稳定下来,Google才能更准确地评估哪些页面具有真正的价值,从而对它们进行排名。因此,频繁更改标题不利于建立长期稳定的排名。 综上所述,...
**误区描述**:一些初学者在初次接触VxWorks时可能会误以为它只能支持单一任务的执行,这主要是因为对实时操作系统的概念理解不清晰。 **正确理解**: - **多任务支持**:VxWorks 支持多任务并发执行,每个任务都...
【标题】:“2021-2022年收藏的精品资料转帖经济学资源.doc” 【描述】:“精品教育教学资料” 这篇文档整理了2021至2022年间收集的一些高质量经济学教育资源,主要关注的是综合性的经济学研究领域。这些资料对于...
在论坛转帖的场景下,这个过程可能会更复杂,因为需要考虑图片的显示顺序、缓存策略、错误处理等因素。例如,可能需要在数据库中记录每个图片的缩略图路径,以便快速加载,同时处理上传失败或网络中断的情况。 总的...
《转帖经典---JAVA设计模式》这本书或资料可能涵盖了这些模式的详细解释、示例代码以及如何在实际项目中应用这些模式。通过学习和理解这些设计模式,开发者能够更好地设计和重构软件,提升代码质量。
总的来说,熊金成的《拓扑学》涵盖了点集拓扑的各个方面,对理解空间结构、连续性和其他相关概念有着深远的影响。无论你是数学专业学生,还是对拓扑学感兴趣的学者,这本书都将为你提供宝贵的资源和深入的理解。
总而言之,学习笔记中涵盖了4412嵌入式开发板的基本使用方法和连接细节,强调了安全操作的重要性以及对不同通信接口的理解。这些内容为初学者在学习嵌入式系统开发时提供了重要的入门知识和实践经验。同时,作者还...
- 使用加花软件对生成的EXE文件进行混淆处理,增加其隐蔽性。 - 接着,使用加壳工具为加花后的程序再添加一层外壳,进一步隐藏其原始特征。 - 最后,测试生成的程序,确保其特征码与未加花、加壳的原版CE有所不同...
- 设想受众可能对哪些话题感兴趣。 - 预测受众可能会提出的问题,并准备好答案。 #### 二、设定目标(Objectives) - **定义**:清晰地定义演讲的目标是什么。 - **重要性**:目标是指导演讲内容和形式的基础,...
通过深入学习ActionScript和MXML,掌握Flex SDK和IDE的使用,以及理解Flex的应用场景,你将能够创建出功能丰富的RIA。在实践过程中,参考文档如Word文档是极其重要的,它们能提供具体指导和实例,加速学习进程。
这些源文件包含了所有与项目相关的元素,包括图形、文本、声音、视频和动作脚本,使得设计师可以对每一个细节进行编辑和调整。FLA文件的重要性在于,它们提供了深入到设计底层的可能性,让开发者或设计师能够完全...
从给定的文件中,我们可以提炼出多个与工作与生活平衡相关的知识点,这些知识点涵盖了职业发展、生活压力、心态调整以及个人成长等多个方面。...理解和处理好这些关系,是实现个人幸福和职业成功的关键。
【标题】:“用C# Generator解决Hanoi塔问题”揭示了如何...为了深入了解这个主题,读者可以访问提供的博客链接,查看完整的源码和详细的解释,甚至尝试自己运行和修改代码,以加深对汉诺塔问题和C# Generator的理解。
7. **嵌入式系统编程**:在这样的项目中,理解微控制器的工作原理,如寄存器配置、中断服务程序和内存管理等,是非常重要的。 8. **图形算法**:如果要显示复杂的图像,可能需要应用基本的图形算法,如扫描线算法或...