当前位置: 首页 > article >正文

WHAT - 浏览器缓存机制系列(二)强缓存、协商缓存和启发式缓存

目录一、介绍二、强缓存三、协商缓存三、html js 缓存策略四、启发式缓存启发式缓存什么时候发生浏览器的推算规则如果没有 Last-ModifiedDevTools 里怎么看出是启发式缓存启发式缓存的风险1. 浏览器行为不一致2. 更新不可控3. CDN 行为不同总结今天主要介绍 HTTP请求缓存中的强缓存和协商缓存。一、介绍浏览器每次发起请求时,会先在浏览器缓存中查找请求的缓存结果和缓存标识。当浏览器第一次向服务器发起请求后,浏览器缓存肯定是没有对应缓存的,所以向服务器发起请求,服务器响应该请求,并返回请求结果和缓存规则,浏览器拿到响应后,将请求结果和缓存标识存入浏览器缓存。浏览器在后续加载对应资源时会根据第一次请求资源时返回的缓存标识来确定缓存规则。二、强缓存根据是否超出某个时间来决定是否从缓存获取数据,不关心服务器文件是否已经更新。在 chrome 控制台的 Network 选项中可以看到有的请求 Size 显示from disk cache或from memory cache,这就是设置了强缓存的结果。要想实现强缓存可以通过设置 HTTP Header 中的Expires和Cache-Control:ExpiresExpires字段是一个HTTP响应头,它指定了资源的到期时间,以GMT格式的日期/时间表示。浏览器会将该时间与客户端的本地时间进行比较,以确定资源是否过期。如果资源的到期时间早于当前时间,浏览器将从服务器重新获取该资源。示例:Expires: Thu, 01 Dec 2022 16:00:00 GMT在上面的示例中,资源的到期时间被设置为2022年12月1日下午4点(GMT时间)。但是,Expires存在一些问题:(1)时区问题: Expires头使用的是 GMT 格林尼治标准时间,可能导致时区差异而产生问题。(2)精度问题: Expires头只能指定到秒级别的精度,而现代浏览器和服务器通常需要提供更高精度的缓存控制。(3)与 Cache-Control 冲突:如果同时使用了Cache-Control和Expires头,Cache-Control的优先级更高。因此,现代Web开发更倾向于使用Cache-Control头来控制缓存,因为它更灵活、精确,并且不容易出现时区等问题。在实际开发中,你可以只使用Cache-Control头来设置缓存策略,而不使用Expires头。接下来我们这就介绍Cache-Control。Cache-Control:public|private|no-store|no-cache|max-age在 HTTP/1.1 中,Cache-Control 是最重要的规则。Cache-Control 是一种更为灵活的方式来设置缓存策略。它可以指定资源的到期时

相关文章:

WHAT - 浏览器缓存机制系列(二)强缓存、协商缓存和启发式缓存

目录 一、介绍 二、强缓存 三、协商缓存 三、html & js 缓存策略 四、启发式缓存 启发式缓存什么时候发生 浏览器的推算规则 如果没有 Last-Modified DevTools 里怎么看出是启发式缓存 启发式缓存的风险 1. 浏览器行为不一致 2. 更新不可控 3. CDN 行为不同 总结 今天主要介…...

如何使用CoreRT:.NET Core终极AOT编译优化指南

如何使用CoreRT:.NET Core终极AOT编译优化指南 【免费下载链接】corert This repo contains CoreRT, an experimental .NET Core runtime optimized for AOT (ahead of time compilation) scenarios, with the accompanying compiler toolchain. 项目地址: https:…...

如何快速上手LedisDB:高性能NoSQL数据库的完整指南

如何快速上手LedisDB:高性能NoSQL数据库的完整指南 【免费下载链接】ledisdb A high performance NoSQL Database Server powered by Go 项目地址: https://gitcode.com/gh_mirrors/le/ledisdb LedisDB是一个由Go语言驱动的高性能NoSQL数据库服务器&#xff…...

mmdetection目标检测API封装:Python SDK开发全攻略

mmdetection目标检测API封装:Python SDK开发全攻略 【免费下载链接】mmdetection open-mmlab/mmdetection: 是一个基于 PyTorch 的人工智能物体检测库,支持多种物体检测算法和工具。该项目提供了一个简单易用的人工智能物体检测库,可以方便地…...

如何在Linux终端使用sc-im?新手入门的完整指南

如何在Linux终端使用sc-im?新手入门的完整指南 【免费下载链接】sc-im sc-im - Spreadsheet Calculator Improvised -- An ncurses spreadsheet program for terminal 项目地址: https://gitcode.com/gh_mirrors/sc/sc-im sc-im是一款功能强大的终端电子表格…...

TOMs插件生态系统:10个必装的官方认证扩展推荐

TOMs插件生态系统:10个必装的官方认证扩展推荐 【免费下载链接】TOMs TOMs is a fully open-source, high-performance, systematic, plugin-oriented, and scenario-agnostic general-purpose development framework. 项目地址: https://gitcode.com/gh_mirrors…...

探索未来桌面体验:AeroSpace Beta,专为Mac打造的高级窗口管理器

探索未来桌面体验:AeroSpace Beta,专为Mac打造的高级窗口管理器 【免费下载链接】AeroSpace AeroSpace is an i3-like tiling window manager for macOS 项目地址: https://gitcode.com/GitHub_Trending/ae/AeroSpace 在数字化的世界里&#xff0…...

如何快速入门Wireshark?Computer-Networking-A-Top-Down-Approach-NOTES实验教程

如何快速入门Wireshark?Computer-Networking-A-Top-Down-Approach-NOTES实验教程 【免费下载链接】Computer-Networking-A-Top-Down-Approach-NOTES 《计算机网络-自顶向下方法(原书第6版)》编程作业,Wireshark实验文档的翻译和解答。 项目…...

python-docx常见问题解答:新手必知的15个错误和解决方案

python-docx常见问题解答:新手必知的15个错误和解决方案 【免费下载链接】python-docx Create and modify Word documents with Python 项目地址: https://gitcode.com/gh_mirrors/py/python-docx python-docx是一个强大的Python库,用于创建和修改…...

智动群剪视频矩阵引

链接:https://pan.quark.cn/s/358832aed834智动群剪视频矩阵引擎,批量制作视频软件软件使用步骤:1.加入素材(手动添加或复制素材到对应目录) 2.勾选需要用到的素材 3.选择功能,修改数值 4.一键开始制作视频…...

AI变声器

链接:https://pan.quark.cn/s/fa61e826ee5e...

AI变声器+

链接:https://pan.quark.cn/s/9b9dd9ddd66d...

终极指南:Upspin核心架构完全解析——三大服务如何构建全球命名系统

终极指南:Upspin核心架构完全解析——三大服务如何构建全球命名系统 【免费下载链接】upspin Upspin: A framework for naming everyones everything. 项目地址: https://gitcode.com/gh_mirrors/up/upspin Upspin是一个创新的全球命名系统框架,旨…...

Slurm高级特性详解:QoS、资源限制与作业优先级配置指南

Slurm高级特性详解:QoS、资源限制与作业优先级配置指南 【免费下载链接】slurm Slurm: A Highly Scalable Workload Manager 项目地址: https://gitcode.com/gh_mirrors/sl/slurm Slurm作为一款高度可扩展的工作负载管理器,提供了强大的作业调度和…...

为什么我的电脑不能升级Windows 11?终极兼容性检测工具深度解析

为什么我的电脑不能升级Windows 11?终极兼容性检测工具深度解析 【免费下载链接】WhyNotWin11 Detection Script to help identify why your PC is not Windows 11 Release Ready. Now Supporting Update Checks! 项目地址: https://gitcode.com/gh_mirrors/wh/Wh…...

Gorilla技术播客系列:与AI先驱探讨函数调用的未来

Gorilla技术播客系列:与AI先驱探讨函数调用的未来 【免费下载链接】gorilla Gorilla: An API store for LLMs 项目地址: https://gitcode.com/gh_mirrors/go/gorilla Gorilla作为LLM的API商店,正在引领函数调用技术的革新。本播客系列邀请AI领域先…...

目前最全的计算机视觉公开数据集汇总 持续更新 400+数据集

总计:47个类别,涵盖约400+个具体数据集 这47个类别基本覆盖了计算机视觉的全部主流研究领域,从底层图像处理(去噪/增强/修复)到中层视觉(检测/分割/跟踪),再到高层理解(识别/问答/推理),以及3D视觉、多模态学习和特殊应用场景。 目录 一、通用视觉基础数据集(分…...

终极Bedrock持续集成指南:如何自动化测试和部署WordPress项目

终极Bedrock持续集成指南:如何自动化测试和部署WordPress项目 【免费下载链接】bedrock WordPress boilerplate with Composer, easier configuration, and an improved folder structure 项目地址: https://gitcode.com/gh_mirrors/be/bedrock Bedrock是一个…...

如何使用ATF快速开发Windows工具:完整入门指南

如何使用ATF快速开发Windows工具:完整入门指南 【免费下载链接】ATF Authoring Tools Framework (ATF) is a set of C#/.NET components for making tools on Windows. ATF has been in continuous development in Sony Computer Entertainments (SCE) Worldwide St…...

ubuntu软件源公钥配置例子 gpg

在旧版本(23.10 及以前)中,所有源都写在一个大文件 /etc/apt/sources.list 里。 在新版本中: 主文件废弃/简化:/etc/apt/sources.list 现在通常只包含一行注释,或者指向新目录。 新位置:官方源被…...

如何在ToaruOS上畅玩经典游戏:从Pong到扫雷的完整指南

如何在ToaruOS上畅玩经典游戏:从Pong到扫雷的完整指南 【免费下载链接】toaruos A completely-from-scratch hobby operating system: bootloader, kernel, drivers, C library, and userspace including a composited graphical UI, dynamic linker, syntax-highli…...

MessagePack-CSharp未来发展方向:终极路线图与功能规划指南

MessagePack-CSharp未来发展方向:终极路线图与功能规划指南 【免费下载链接】MessagePack-CSharp 项目地址: https://gitcode.com/gh_mirrors/mes/MessagePack-CSharp MessagePack-CSharp作为高效的二进制序列化库,正通过持续的技术创新和功能优…...

PyCaret批量预测:处理大规模推理任务的终极指南

PyCaret批量预测:处理大规模推理任务的终极指南 【免费下载链接】pycaret An open-source, low-code machine learning library in Python 项目地址: https://gitcode.com/gh_mirrors/py/pycaret PyCaret是一个开源的低代码机器学习库,它通过简化…...

weixin227基于微信小程序的社区门诊管理系统php(文档+源码)_kaic

第5章 系统详细设计5.1用户功能模块(微信端) 用户注册,在用户注册页面通过填写账号、密码、确认密码、姓名、性别、手机、等信息进行注册操作;如图5-1所示。图5-1用户注册界面图用户登录,用户通过登录页面输入账号和密…...

weixin226基于微信小程序的新生报到系统的设计与实现ssm(文档+源码)_kaic

第5章 系统实现进入到这个环节,也就可以及时检查出前面设计的需求是否可靠了。一个设计良好的方案在运用于系统实现中,是会帮助系统编制人员节省时间,并提升开发效率的。所以在系统的编程阶段,也就是系统实现阶段,对于…...

weixin225基于微信小程序的汽车销售系统的设计与实现springboot(文档+源码)_kaic

第5章 系统实现进入到这个环节,也就可以及时检查出前面设计的需求是否可靠了。一个设计良好的方案在运用于系统实现中,是会帮助系统编制人员节省时间,并提升开发效率的。所以在系统的编程阶段,也就是系统实现阶段,对于…...

Vue3组件化架构终极指南:新蜂商城插件系统深度解析

Vue3组件化架构终极指南:新蜂商城插件系统深度解析 【免费下载链接】newbee-mall-vue3-app 🔥 🎉Vue3 全家桶 Vant 搭建大型单页面商城项目,新蜂商城 Vue3.2 版本,技术栈为 Vue3.2 Vue-Router4.x Pinia Vant4.x。 …...

异步处理精髓:AsyncHandler与AsyncCompletionHandler实战指南

异步处理精髓:AsyncHandler与AsyncCompletionHandler实战指南 【免费下载链接】async-http-client Asynchronous Http and WebSocket Client library for Java 项目地址: https://gitcode.com/gh_mirrors/as/async-http-client 在Java开发中,高效…...

如何用CleverHans评估模型鲁棒性:5大核心指标与实战方法指南

如何用CleverHans评估模型鲁棒性:5大核心指标与实战方法指南 【免费下载链接】cleverhans 项目地址: https://gitcode.com/gh_mirrors/clev/cleverhans CleverHans是一个强大的开源库,专为机器学习模型的对抗性鲁棒性评估和防御而设计。它提供了…...

终极对比:为什么doctest是最快的C++测试框架,Google Test的完美替代方案

终极对比:为什么doctest是最快的C测试框架,Google Test的完美替代方案 【免费下载链接】doctest 项目地址: https://gitcode.com/gh_mirrors/doc/doctest 在C开发中,测试框架的选择直接影响开发效率和项目质量。doctest作为一款轻量级…...