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 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> 如何用缓存(Cache)进行前端性能优化? -> 正文阅读

[网络协议]如何用缓存(Cache)进行前端性能优化?

一、缓存是什么?

缓存是一种保存资源副本并在下次请求时直接使用该副本的技术,可减少等待时间和网络流量,显著提升网站性能。


1、常见缓存
  • 私有缓存:只能用于单独用户,譬如浏览器缓存;

  • 共享缓存:能被多个用户使用,譬如代理服务器缓存;

http_cache_type


2、什么资源会被缓存?
  • 用 HTTP 协议 GET 方法请求的资源默认都会被缓存,譬如html文档、图片、文件等;
  • 服务器响应中,包含 Cache-Control 头的资源,根据具体指令确定是否要缓存。

3、查看资源的缓存情况?
  • 用 chrome 打开网站;

  • 打开开发者工具(windows快捷键Control+Shift+J、Mac快捷键Command+Option+J);

  • 下图中的 disk cachememory cache 都是使用了缓存;

  • 不要勾选 Disable cache ,勾选意味着禁用缓存功能。

查看资源是否使用缓存?


4、查看服务器对缓存的配置?

下图列出服务器返回的资源,只需要点击其中一行,即可显示资源请求和响应的详细信息,图中 Cache-Control 就是服务器对此资源的缓存配置。

查看服务器对资源缓存的设置?


二、缓存更新
1、触发缓存的验证请求

资源被更新了,浏览器也必须重新获取资源,才能显示最新版本的网站。下面几种情况都会触发验证请求,如果资源更新了,服务器返回最新资源给客户端,否则客户端继续使用缓存显示页面。

  • 点击浏览器的刷新按钮,需要验证;
  • 当前时间 大于 响应头 Expires 的时间,需要验证;
  • 缓存再本地保存时长 超过 Cache-Control 中 max-age 、s-maxage 的时长,需要验证;
  • Cache-Control 被设置为 no-cache,需要验证;

2、缓存验证的过程?

缓存的本地时长超过 Cache-Control 中 max-age 设定的时长时,需要进行缓存验证,图中的验证结果是 304(Not Modified),表示缓存没有改动,无需更新,可继续使用。

HTTP-Staleness


3、缓存验证请求中的头信息

缓存的具体信息(资源id,修改时间等)都在请求头中,服务器对比下这些信息,即可知道缓存是否需要更新。常见的缓存验证的请求头组合:

  • ETag + If-Match;ETag + If-None-Match;

    ETag 是资源的唯一标识,可以快速确定是否需要返回最新资源给请求方。

  • Last-Modified + If-Modified-Since;Last-Modified + If-Unmodified-Since;

    这两种是根据时间来确定缓存是否需要更新,通常使用在没有 ETag 的情况。


三、相关 HTTP头 说明
1、Cache-Control

Cache-Control 是 HTTP 协议的请求头和响应头,用于实现缓存功能。单个请求可包含多个指令,用逗号隔开,指令不区分大小写但建议小写。详细用法,看这里!


2、Vary

Vary 是 HTTP 协议的其中一个响应头,代理服务器用它来判断是否存在共享缓存来响应客户,没有就向源服务器发新请求来响应用户。详细用法,看这里!


3、其他相关头
  • ETag :资源的唯一标识符,用于确定缓存资源是否是最新的?

  • If-Match、If-None-Match :用作确定资源 存在或不存在 ?;

  • Last-Modified :表示资源的最后修改时间;

  • If-Modified-Since、If-Unmodified-Since : 在给定时间之后,有或没有 修改过?

  • 以上这些属性的详细说明,看这里!


四、Nginx 怎么使用缓存?

Nginx 作为代理服务器,开启缓存功能,可以减轻源服务器的压力,提升整个网站的性能。详情,看这里!


五、参考文档
  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2021-12-01 18:03:38  更:2021-12-01 18:03:44 
 
开发: 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年11日历 -2024/11/26 8:53:47-

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