首页 > 其他分享 >浏览器缓存

浏览器缓存

时间:2024-09-23 17:54:39浏览次数:1  
标签:缓存 HTTP 请求 服务器 浏览器 资源

使用场景
- 强缓存适用于不经常变动的静态资源,图片、css、js 等文件。这些资源变更频率低,可以设置较长的缓存时间,以提高加载速度减少服务器压力。 - 协商缓存适用于可能被频繁更新的资源,主要通过 if-none-match 也就是 etag 或者 if-modified-since 来判断是否需要修改
强缓存
> 不会向服务器发送请求,直接从缓存中读取资源。前后端均可以设置一般对应 css、js、img 这种不经常变的资源直接设置即可。协商缓存主要是后端设置,他们会把 Last-Modified-sinec 放到请求头里与之前接受的 last-modified 进行比较。亦或者通过 etag 进行比较
- Expires: 绝对时间,浏览器会根据此时间判断是否命中强缓存 - Cache-Control: 相对时间,max-age=3600,浏览器会根据此时间判断是否命中强缓存
协商缓存
> 向服务器发送请求,服务器根据请求头中的相关字段判断是否命中协商缓存
- Last-Modified: 资源在服务器最后被修改的时间 - If-Modified-Since: 客户端发送请求时,会将此值发送给服务器,询问服务器在该时间后资源是否有被修改过
从输入 URL 到页面展示,这中间发生了什么
- 浏览器进程检查 url,组装协议,构成完整的 url。 - 网络进程接收到 url 请求后检查本地缓存是否缓存了该请求资源,如果有则将该资源返回给浏览器进程。 - 如果没有,网络进程向 web 服务器发起 http 请求(网络请求),请求流程如下: - DNS 解析:将域名解析成 IP 地址 - TCP 连接:建立 TCP 连接 - 发送 HTTP 请求:浏览器向服务器发送 HTTP 请求 - 服务器处理请求并返回 HTTP 响应:服务器接收到请求后,处理请求并返回 HTTP 响应 - 断开 TCP 连接:浏览器接收到服务器返回的 HTTP 响应后,断开 TCP 连接。 - 浏览器进程接收到网络进程返回的 HTTP 响应后,会根据响应头中的内容类型(Content-Type)来决定如何处理响应数据。 - 如果是 HTML 文档,浏览器会继续处理 HTML 文档,将其解析成 DOM 树。 - 如果是 CSS 文档,浏览器会将其解析成 CSSOM 树。 - 如果是 JavaScript 文档,浏览器会执行 JavaScript 代码。

标签:缓存,HTTP,请求,服务器,浏览器,资源
From: https://www.cnblogs.com/zhoulongfei/p/18427517

相关文章

  • 如何在平板电脑上设置谷歌浏览器的主页
    在数字化时代,我们越来越依赖平板电脑来完成日常任务。其中,谷歌浏览器作为最常用的网页浏览工具之一,其强大的功能和便捷的操作深受用户喜爱。本文将详细介绍如何在平板电脑上设置谷歌浏览器的主页,以提升您的使用体验和效率。(本文由https://chrome.cmrrs.com/站点的作者进行编写......
  • 【解决方案】Java 互联网项目中常见的 Redis 缓存应用场景
    一、常见key-value首先介绍的是项目开发中常见的一些String类型的key-value结构场景,如:使用jsonStr结构存储的用户登录信息,包括:手机号、token、唯一uuid、昵称等;jsonStr结构某个热门商品的信息,包括:商品名称、商品唯一id、所属商家、价格等;String类型的、......
  • CentOS 9 安装 google Chrome Web 浏览器的一种简单方法(2024.9)
    我自己选择了一个简单的方法。1.高级上网,到google的Chrome下载网页,下载Linux的安装包,google-chrome-stable_current_x86_64.rpm,109M如网址:https://www.google.com/intl/en_uk/chrome/next-steps.html?platform=linux&statcb=0&installdataindex=empty&defaultbrowser=0附百度......
  • 谷歌浏览器,记住密码后,账户和用户名自动填充了
    解决办法:给el-input加上readonly,foucus时设置为false.参考文章地址:https://blog.csdn.net/yolo3712/article/details/135388592本文介绍了解决在新增用户时,由于浏览器记住密码导致输入框自动填充账号密码问题的方法,通过使用Vue的el-input组件的readonly属性,并配合鼠标聚焦事件......
  • 缓存写入失败的解决方案
    缓存写入失败通常是因为磁盘空间不足或目录权限设置不当。以下是一些具体的解决方案:1.检查磁盘空间1.1检查磁盘空间是否已满使用命令行检查:使用命令行工具检查磁盘空间是否已满。sh df-h输出示例:  FilesystemSizeUsedAvailUse%Mountedon/d......
  • 【解决方案】Java 互联网项目中常见的 Redis 缓存应用场景
    目录前言一、常见key-value二、时效性强三、计数器相关四、高实时性五、排行榜系列六、文章小结前言在笔者3年的Java一线开发经历中,尤其是一些移动端、用户量大的互联网项目,经常会使用到Redis作为缓存中间件的基本工具来解决一些特定的问题。下面是笔者总结梳理的一些常......
  • Python中的同一运算符与整数缓存问题
    在Python中,is运算符与==运算符的使用常常引发混淆。特别是在处理小整数时,Python会进行整数缓存,以提高性能。本文将深入探讨同一运算符(is)与相等运算符(==)的区别,并详细阐述整数缓存的问题,通过具体的代码示例和运行结果来帮助理解。1.同一运算符与相等运算符is运算符:判断两个对象是否......
  • MySQL—缓存_mysql 页缓存
    bufferpool缓存什么InnoDB会把存储的数据划分为若干个页,以页作为磁盘和内存交互的基本单位,一个页默认大小为16KB,MySQL启动时,InnoDB会为bufferpool申请一篇连续的内存空间,然后按照默认的16KB的大小划分出一个个的页,bufferpool中的页就叫做缓存页。BufferPool除了缓存「索引页......
  • 【编程底层原理】彻底搞懂Spring是如何利用三级缓存来解决循环依赖问题的(一级缓存为
    一、整体推导思路为了彻底搞懂Spring是如何利用三级缓存来解决循环依赖问题的,要么去找三级缓存的设计者了解其设计的初衷,要么利用反推法来进行倒推(即一级缓存为啥不行,二级缓存为啥也不合适)。为了让大家能有一个更清晰的理解脉路,下面将先从反推法来介绍下一级缓存为啥不......
  • 商城项目改进分布式缓存下的登录逻辑和页面展示-----商城项目
    packagecom.alatus.mall.auth.app;importcom.alatus.common.constant.AuthServerConstant;importcom.alatus.common.exception.BizCodeEnum;importcom.alatus.common.utils.R;importcom.alatus.common.vo.MemberRespVo;importcom.alatus.mall.auth.feign.MemberFe......