在浏览器第一次请求某一个URL时,服务器端的返回状态会是200,内容是客户端请求的资源,同时有一个Last-Modified的属性标记此文件在服务器端最后被修改的时间。客户端第二次请求此URL时,根据HTTP协议的规定,浏览器会向服务器传送If-Modified-Since报头,询问该时间之后文件是否有被修改过。两个时间戳的格式如下:
Last-Modified:Last-Modified : Fri , 12 May 2006 18:53:33 GMT
If-Modified-Since : Fri , 12 May 2006 18:53:33 GMT
如果服务器端的资源没有变化,则自动返回 HTTP 304(Not Changed.)状态码,内容为空,这样就节省了传输数据量。当服务器端代码发生改变或者重启服务器时,则重新发出资源,返回和第一次请求时类似。从而保证不向客户端重复发出资源,也保证当服务器有变化时,客户端能够得到最新的资源。
对于静态文件,例如:CSS、图片,服务器会自动完成 Last Modified 和 If Modified Since 的比较,完成缓存或者更新。但是对于动态页面,不会包含 Last Modified 信息,浏览器、网关等都不会做缓存,也就是在每次请求的时候都完成一个 200 的请求。
如下两张图片,图一为浏览器无缓存的状态码,可以看出 status 全为 200。图二是浏览器中存在缓存时的状态码,可以看出全为 304。同时我们还可以比较二者页面的加载时间,时间位于最下面一行的Load Time,可以看出差距比较大,使用缓存可以节省好多时间。
相关文章
- 服务器状态304,解析304状态码错误提示的原因与解决304错误提示的方法
- 状态码304的简单介绍
- 简单的常见 http 响应状态码
- HTTP请求返回状态码中301与302的状态码区别
- 简简单单的Vue3(插件开发,路由系统,状态管理)
- 几种HTTP请求参数的简单介绍
- vue中的axios拦截器拦截302状态码
- Parallels Desktop 20 for Mac 2024年最新激活码秘钥- Parallels Desktop for Mac 简单、强大、无缝 搭载 Parallels Desktop ,Windows 游戏和应用程序,Mac 都能跑。macOS 和 Windows 之间的完美协同,无与伦比的使用体验。 微软认证解决方案 Parallels Desktop 是值得信赖的Mac虚拟机软件,第一款 Microsoft 认证的适用于Mac 上运行 Windows 11 的解决方案,改变您的 Mac 体验。 在这里购买 Parallels Desktop,好处多多。
- 简单介绍游戏盾的流量清洗机制
- 介绍一个 golang 图像验证码,简单易用,高安全性的“行为式验证码”Go库