前端的强缓存和协商缓存

news/2024/9/23 3:14:42/

前端缓存机制

前端缓存主要分为两种类型:缓存协商缓存

缓存(HTTP Cache-Control)

  • 通过设置HTTP响应头中的Cache-Control实现。
  • 浏览器根据Cache-Control的值决定是否重新请求资源。
  • 指令示例:
    • no-cache:重新验证缓存资源。
    • no-store:禁止缓存
    • public:允许中间缓存存储响应。
    • private:仅用户可缓存
    • max-age=<seconds>:设置缓存时间。

协商缓存(Conditional Cache)

  • 缓存过期后,浏览器通过发送请求头查询资源是否更新。
  • 使用ETagLast-Modified与服务器进行验证。
  • 如果资源未更新,服务器返回304 Not Modified

协商缓存的HTTP头

  • ETag:资源版本标识符,用于If-None-Match
  • Last-Modified:上次修改日期,用于If-Modified-Since

区别和使用场景

  • 缓存:适用于不常变动的资源,减少请求。
  • 协商缓存:适用于可能更新的资源,验证资源更新。

实践建议

  • 合理设置Cache-Control实现强缓存
  • 对动态内容使用ETagLast-Modified实现协商缓存
  • 结合使用两种缓存策略,优化网站性能和用户体验。

http://www.ppmy.cn/news/1468892.html

相关文章

C++作业第四天

#include <iostream> using namespace std; class Per { private: string name; int age; int *high; double *weight; public: //构造函数 Per() { cout << "Per的无参构造" << endl; } Per(str…

体育器材管理系统(Java+MySQL)

技术栈 Java语言&#xff1a;作为主要编程语言&#xff0c;用于编写应用逻辑和界面交互。MySQL数据库&#xff1a;用于存储和管理体育器材的相关数据。Swing窗口视图&#xff1a;用于创建图形用户界面&#xff0c;使用户能够通过窗口进行操作&#xff08;GBK编码&#xff09;。…

大数据面试题第二期*6

题1、Namenode挂了怎么办? 方法一&#xff1a;将SecondaryNameNode中数据拷贝到namenode存储数据的目录。 方法二&#xff1a;使用importCheckpoint选项启动namenode守护进程&#xff0c;从而将SecondaryNameNode中数据拷贝到namenode目录中。 题2、Hadoop 的namenode 宕机怎么…

vue3的个人理解

本文目的是记录使用vue3的时候的一些属性的个人理解。 一、defineExpose 官方说明 个人理解 在 <script setup>组件中&#xff0c;defineExpose可以暴露出组件的属性。项目实战// dialog组件 <script setup>import { ref } from vueimport { Close } from elemen…

【机器学习算法】支持向量机SVM算法概述

支持向量机&#xff08;SVM&#xff09;算法是一种高效的监督学习算法&#xff0c;主要用于解决分类、回归分析等问题。 SVM算法原理 支持向量与超平面&#xff1a;SVM的主要目标是寻找一个最优的超平面来分隔不同的类别。在特征空间中&#xff0c;这个超平面不仅能够区分不同…

50etf期权怎么开户?期权懂有几种方式?

今天带你了解50etf期权怎么开户&#xff1f;期权懂有几种方式&#xff1f;50ETF期权开户可以通过证券公司、期权交易平台或期权交易应用进行。投资者需填写开户申请表格&#xff0c;提供身份证明和其他资料&#xff0c;完成开户手续。 50etf期权怎么开户&#xff1f; 满足资金…

单臂路由的配置(思科、华为)

#交换设备 不同vlan属于不同广播域&#xff0c;不能互相通信&#xff0c;他们配置的是不同网段的IP地址&#xff0c;针对不同网段的IP地址进行通信&#xff0c;就需要用到路由技术 实现不同vlan之间的通信技术有两种 单臂路由三层交换 单臂路由 一、思科设备的单臂路由配…

Docker 安装部署(CentOS 8)

以下所有操作都是基于 CentOS 8 系统进行操作的。安装的 Docker 版本为 25.0.5-1.el8。 1、卸载老版本 Docker sudo yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine注&a…