304 Not Modify
最近和同事一起看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相关推荐
- 项目--静态资源cdn的引入
DNS用CNAME解析到源站 回源缓存的设置 强推失效 cdn理解 http 的cache control响应头 private:客户端可以缓存 public:客户端和代理服务器都可以缓存 max-a ...
- JSP/Servlet 学习笔记
文章目录 Servlet/JSP 疑难汇总: Web 容器: Servlet 的相关知识点: 单例模式: 反射和注解: Web请求 JSP 相关内容: 网页中的编解码相关问题: 数据库使用的相关问题: ...
- ajax没返回响应数据,jQuery的Ajax时无响应数据的解决方法
jQuery的Ajax时无响应数据的解决方法 复制代码 代码如下: $.ajax( { type: "POST", url: "/MemberComment.aspx/G ...
- 高性能程序设计,缓存为王
作者 | 一凡sir,全栈工程师,慕课网精英讲师 来源 | 慕课网(imooc.com) 背景 我们在程序设计时,有一个极其重要的非功能性指标:性能,总是无时无刻不缠绕在程序员的脑海,尤其是我们开发的 ...
- 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 ...
- Linux下stat + 文件名后, Access,Modify,Change的含义
我们首先在一个目录下创建了一个文件使用命令touch file 然后输入命令:stat file,这个时候会输出一系列信息 大家注意红色框中的三个时间 Access : 文件最近一次被访问的时间 Mo ...
- HTTP缓存——304与200 from cache
个人博客原文地址 HTTP与缓存相关的字段 1. 通用字段 字段名称 释义 Cache-Control 控制缓存具体的行为 Pragma HTTP1.0时的遗留字段,当值为"no-cache ...
- 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. 我有一个 ...
- nginx css 304 导致图片丢失_Nginx 从入门到实战
优质文章,及时送达 作者 | 海岛 来源 | sf.gg/a/1190000014893012 上篇 | 10 个让你笑的合不拢嘴的 GitHub 项目 基础篇 一.环境 服务器版本:CentOS 7 ...
最新文章
- 中式古建筑su模型大全
- mac下安装apc并且使用
- mysql+怎样查询最后几条_mysql 查询开头或最后几行
- laravel + Vue 前后端分离 之 项目配置- 生产环境部署
- 快速排序算法-php实现
- 关于企业管理信息系统
- idea命令行运行多个客户端_推荐一款神仙颜值的 Redis 客户端工具,开源啦
- [码海拾贝 之Perl]在字符串数组中查找特定的字符串是否存在
- kafka 拉取的数据排序_Kafka 源码解析之 Consumer Poll 模型(七)
- 远程读取mysql_远程获取数据库和文件的方法
- 武汉大学计算机学院2010情景剧,武汉大学2010届毕业生生源httpwww.xsjy.whu.edu.cn.doc...
- 前端开发者思考:假如5年后你是开发总监
- Windows下使用smb搭建你的个人云盘(ipad不止爱奇艺)
- 【Cocos2d-x游戏引擎开发笔记(13)】Tiled Map Editor(一)
- 【MIMO】两种空间相关信道生成方式的记录(公式+MATLAB代码)
- Xamarin效果第二十三篇之离线语音识别
- 淘宝淘金币助手,自动完成淘金币任务,蚂蚁庄园和蚂蚁森林,天猫领红包和收取能量
- 20162316刘诚昊 用数组实现循环队列
- CISA必修列表未收录数十个已遭利用漏洞
- Waiting for application to come online: com.example.andyyuan.androidmui.test | com.example.andyyuan.
热门文章
- 装饰器的注意事项python_python中的装饰器decorator
- 2.4-2.5、Hive整合(整合Spark、整合Hbase)、连接方式Cli、HiveServer和hivemetastore、Squirrel SQL Client等
- hibernate 延迟加载的错误 failed to lazily initialize a collection of role
- 检索数据_4_从表中查询部分列
- 表达式求值问题 数据结构_【每日一题51】实际问题与一次函数 看图象求表达式 由表达式求值...
- OpenCV学习笔记之图像融合
- Python 中各种imread函数的区别与联系
- 多继承中构造器和析构器的调用顺序
- 最渣的 Spring Boot 文章
- PhotoShop常用的功能汇总