最近和同事一起看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 的一个理解。

来源:https://blog.csdn.net/qq_25543685/article/details/53125926

304 Not Modify相关推荐

  1. 项目--静态资源cdn的引入

    DNS用CNAME解析到源站 回源缓存的设置 强推失效 cdn理解 http 的cache control响应头 private:客户端可以缓存 public:客户端和代理服务器都可以缓存 max-a ...

  2. JSP/Servlet 学习笔记

    文章目录 Servlet/JSP 疑难汇总: Web 容器: Servlet 的相关知识点: 单例模式: 反射和注解: Web请求 JSP 相关内容: 网页中的编解码相关问题: 数据库使用的相关问题: ...

  3. ajax没返回响应数据,jQuery的Ajax时无响应数据的解决方法

    jQuery的Ajax时无响应数据的解决方法 复制代码 代码如下: $.ajax( { type: "POST", url: "/MemberComment.aspx/G ...

  4. 高性能程序设计,缓存为王

    作者 | 一凡sir,全栈工程师,慕课网精英讲师 来源 | 慕课网(imooc.com) 背景 我们在程序设计时,有一个极其重要的非功能性指标:性能,总是无时无刻不缠绕在程序员的脑海,尤其是我们开发的 ...

  5. java.lang.IllegalStateException: Cannot modify managed objects outside of a write transaction. in /U

    错误内容如下 java.lang.IllegalStateException: Cannot modify managed objects outside of a write transaction ...

  6. Linux下stat + 文件名后, Access,Modify,Change的含义

    我们首先在一个目录下创建了一个文件使用命令touch file 然后输入命令:stat file,这个时候会输出一系列信息 大家注意红色框中的三个时间 Access : 文件最近一次被访问的时间 Mo ...

  7. HTTP缓存——304与200 from cache

    个人博客原文地址 HTTP与缓存相关的字段 1. 通用字段 字段名称 释义 Cache-Control 控制缓存具体的行为 Pragma HTTP1.0时的遗留字段,当值为"no-cache ...

  8. excel html modify,在Excel 2010中修改Series对象上的Z-index(Modify Z-index on Series object in Excel 2010)...

    在Excel 2010中修改Series对象上的Z-index(Modify Z-index on Series object in Excel 2010) 我正在使用excel 2010. 我有一个 ...

  9. nginx css 304 导致图片丢失_Nginx 从入门到实战

    优质文章,及时送达 作者 | 海岛 来源 | sf.gg/a/1190000014893012 上篇 | 10 个让你笑的合不拢嘴的 GitHub 项目 基础篇 一.环境 服务器版本:CentOS 7 ...

最新文章

  1. 中式古建筑su模型大全
  2. mac下安装apc并且使用
  3. mysql+怎样查询最后几条_mysql 查询开头或最后几行
  4. laravel + Vue 前后端分离 之 项目配置- 生产环境部署
  5. 快速排序算法-php实现
  6. 关于企业管理信息系统
  7. idea命令行运行多个客户端_推荐一款神仙颜值的 Redis 客户端工具,开源啦
  8. [码海拾贝 之Perl]在字符串数组中查找特定的字符串是否存在
  9. kafka 拉取的数据排序_Kafka 源码解析之 Consumer Poll 模型(七)
  10. 远程读取mysql_远程获取数据库和文件的方法
  11. 武汉大学计算机学院2010情景剧,武汉大学2010届毕业生生源httpwww.xsjy.whu.edu.cn.doc...
  12. 前端开发者思考:假如5年后你是开发总监
  13. Windows下使用smb搭建你的个人云盘(ipad不止爱奇艺)
  14. 【Cocos2d-x游戏引擎开发笔记(13)】Tiled Map Editor(一)
  15. 【MIMO】两种空间相关信道生成方式的记录(公式+MATLAB代码)
  16. Xamarin效果第二十三篇之离线语音识别
  17. 淘宝淘金币助手,自动完成淘金币任务,蚂蚁庄园和蚂蚁森林,天猫领红包和收取能量
  18. 20162316刘诚昊 用数组实现循环队列
  19. CISA必修列表未收录数十个已遭利用漏洞
  20. Waiting for application to come online: com.example.andyyuan.androidmui.test | com.example.andyyuan.

热门文章

  1. 装饰器的注意事项python_python中的装饰器decorator
  2. 2.4-2.5、Hive整合(整合Spark、整合Hbase)、连接方式Cli、HiveServer和hivemetastore、Squirrel SQL Client等
  3. hibernate 延迟加载的错误 failed to lazily initialize a collection of role
  4. 检索数据_4_从表中查询部分列
  5. 表达式求值问题 数据结构_【每日一题51】实际问题与一次函数 看图象求表达式 由表达式求值...
  6. OpenCV学习笔记之图像融合
  7. Python 中各种imread函数的区别与联系
  8. 多继承中构造器和析构器的调用顺序
  9. 最渣的 Spring Boot 文章
  10. PhotoShop常用的功能汇总