IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> 对于缓存和304状态码的学习 -> 正文阅读

[网络协议]对于缓存和304状态码的学习

304状态码:
?? ?即客户端第一次向服务器请求资源的时候,服务器会返回一些字段给客户端,客户端便可以判断是否将资源进行缓存;
?? ?当第二次请求的时候,请求头的对应的字段值和服务器的字段值进行比较,若资源修改了,则状态码为200,并重新返回新的字段值和资源,存入缓存中,若没有修改资源,则状态码为304,并直接读取缓存中资源。


一些字段:
?? ?expires:值是一个时间戳,表示过期的时间,当再一次请求时如未超过该值则用缓存的资源,否则重新请求。(该值的判断是通过本地的时间来判断,但本地时间可以修改,所以会有问题)

?? ?Cache-Control:1、值为no-cache:告诉浏览器忽略资源的缓存副本,强制每次请求直接发给服务器。2、no-store:强制缓存在任何情况不要保留副本。3、max-age:指明缓存的有效时长,单位秒数。4、public:任何缓存的地方都可以缓存该资源。5、private:针对于单个用户缓存资源。

?? ?Last-Modified:添加在响应头中,告诉客户端当前资源修改的最后时间。

?? ?if-Modified-Since:添加在请求头中,当第一次请求的时候,响应头的Last-Modified非空,第二次请求的时候会在请求头中加入该字段,之后发给服务器进行判断。

?? ?ETag:告诉浏览器当前资源在服务器的唯一标识符

?? ?if-None-Match:如果第一次请求的时候响应头的ETag
非空,第二次请求的时候,会将第一次的ETag的值携带在请求头中发给服务器。


关于缓存的一些:
浏览器缓存就是指在本地计算机中开辟一个内存区,保存用户访问的一些信息。

浏览器的缓存过程:强缓存,协商缓存。
?? ?强缓存:当访问URL的时候,不会向服务器发送请求,直接从缓存中读取资源,但返回的状态码是200。
?? ?强制缓存会把资源放到memory cache和disk cache,造成强缓存的字段:Cache-control和Expires。

memory cache:内存中的缓存,特点,短期存储,如果有一个页面的缓存占用很多内容,则前面的缓存会失效,将页面关闭,该缓存就会消失,就会查找disk cache里面的内容。
disk cache:存储在硬盘中的缓存,允许跨站点等。


?? ?协商缓存:当强缓存失效(超过规定时间)时,就需要用协商缓存。浏览器会先请求缓存数据库,返回标识,并与服务器比较,若缓存未失效,则返回304继续使用。造成协商缓存的字段:Last-Modified/if-Modified-since ?和 ETag/if-None-Match。

?

?? ?总的来说,在网络请求中,当客户端第一次发送请求到服务器的时候,若响应头中设置了cache-control和Last-Modified等,此时客户端判断是否对资源进行缓存,若缓存,则在下一次发送请求的时候,会查看cache-control里面的时间是否到期,若没有则会先从memory cache中获取资源,若关闭了页面,在下次发送请求,会在disk cache中寻找资源,在这之前返回的状态码都是200,当时间到期后,就会用到协商缓存,若对应的标识和服务器的标识是一样的,则此时的状态码是304,返回之前的资源,否则返回新的资源,并且状态码为200。

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2021-11-25 08:28:41  更:2021-11-25 08:29:24 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年7日历 -2024/7/5 13:48:00-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码