首页 > 其他分享 >浏览器缓存什么时候会出现如下情况:from disk、from memory?

浏览器缓存什么时候会出现如下情况:from disk、from memory?

时间:2024-12-15 09:09:50浏览次数:5  
标签:缓存 浏览器 读取 内存 memory 磁盘 disk 资源

在前端开发中,浏览器缓存是提高网页加载速度和减少服务器负载的重要机制。当用户访问一个网站时,浏览器会将下载的资源(如HTML、CSS、JavaScript文件等)存储在本地,以便在下次访问时直接使用,而无需再次从服务器下载。在浏览器缓存中,“from disk”和“from memory”是两种常见的缓存读取方式,它们的出现情况与浏览器的缓存策略和资源类型等因素密切相关。

from disk(磁盘缓存)

  • 出现情况:当浏览器需要读取一个资源,但在内存中未找到该资源时,会尝试从磁盘缓存中读取。磁盘缓存通常用于存储较大的文件或长时间未访问的资源,以节省内存空间。
  • 特点:磁盘缓存的存取效率相对较低,但存储容量大,可以存储更多的资源。一旦资源被存储在磁盘缓存中,即使关闭浏览器或重启计算机,这些资源仍然可以被保留下来,直到被手动清除或达到缓存过期时间。

from memory(内存缓存)

  • 出现情况:当浏览器需要读取一个资源,并且在内存缓存中找到了该资源时,会直接从内存缓存中读取。内存缓存通常用于存储较小的文件或频繁访问的资源,以提高访问速度。
  • 特点:内存缓存的存取效率非常高,因为内存访问速度远快于磁盘。但是,内存缓存的容量有限,当内存使用率较高或浏览器关闭时,内存缓存中的资源会被释放。

浏览器缓存策略

浏览器缓存策略分为强制缓存和协商缓存两种,它们都会影响“from disk”和“from memory”的出现情况。

  • 强制缓存:浏览器在缓存有效期内不会向服务器发送请求,直接从缓存中读取资源。此时,资源可能是从内存缓存或磁盘缓存中读取的,具体取决于缓存策略和资源类型。强制缓存可以通过设置HTTP头部的Cache-ControlExpires字段来实现。
  • 协商缓存:当强制缓存失效时,浏览器会向服务器发送请求,并携带缓存标识(如Last-ModifiedETag)。服务器根据缓存标识判断资源是否已更改,如果未更改则返回304状态码和“Not Modified”字符串,告诉浏览器可以从缓存中加载资源;如果已更改则返回新的资源和新的缓存标识。在协商缓存阶段,资源可能是从内存缓存或磁盘缓存中读取的,具体取决于之前的缓存情况和当前的请求。

开发者应对措施

  • 版本控制:使用版本控制工具(如Git)对代码进行版本管理,以便在出现问题时可以迅速回溯和修复。
  • 优化资源加载:通过优化图片、CSS、JavaScript文件的加载和缓存策略,可以减少页面加载时间并提高用户体验。
  • 设置合理的缓存策略:根据资源的类型和访问频率设置合理的缓存策略,包括缓存时间、缓存位置等。
  • 定期清理缓存:为了确保用户能够及时获取最新的页面内容,开发者可以定期清理缓存文件或在网站更新后提醒用户清除缓存。

综上所述,“from disk”和“from memory”是浏览器缓存中的两种读取方式,它们的出现情况与浏览器的缓存策略和资源类型等因素密切相关。开发者需要根据实际情况设置合理的缓存策略并优化资源加载方式以提高网页性能和用户体验。

标签:缓存,浏览器,读取,内存,memory,磁盘,disk,资源
From: https://www.cnblogs.com/ai888/p/18607561

相关文章

  • Implementing Memory in LLM Applications Using LangChain
    ImplementingMemoryinLLMApplicationsUsingLangChainhttps://www.codecademy.com/article/implementing-memory-in-llm-applications-using-lang-chain老版本https://python.langchain.com/v0.1/docs/modules/memory/types/buffer/ HowtomigratetoLangGraphmemor......
  • 针对缓存雪崩的面试问题
    针对于缓存雪崩,谈一下个人的几点看法,之前某美国老奶访台湾的时候某大厂就出现过缓存雪崩的问题。现在业内主流的做法是一致性hash+rehash,也就是说出现缓存雪崩分为两种情况:情况一:缓存不支持rehash导致的服务雪崩。情况二:缓存支持rehash导致的服务雪崩,大部分跟流量洪峰有......
  • 【Spring】Spring三级缓存以及如何解决循环依赖
    1.Spring三级缓存Spring的三级缓存机制主要应用于其依赖注入(DI)容器中,特别是在单例(Singleton)作用域的Bean创建过程中。这三级缓存的设计目的是为了提高性能,减少重复创建Bean的开销,并确保Bean的唯一性和一致性。1.1一级缓存(SingletonObjectsCache)存储位置:single......
  • 语义缓存:提升 RAG 性能的关键策略
    检索增强生成(Retrieval-AugmentedGeneration,简称RAG)(RAG综述:探索检索增强生成技术的多样性与代码实践)技术已经成为构建高性能AI模型的重要基石。RAG通过结合先进的语言模型与外部知识检索,能够生成既准确又富含上下文的响应。然而,尽管RAG功能强大,但它也伴随着一系列挑战,如高令牌......
  • 为什么需要清除浏览器缓存才能正常访问HTTP?
    301重定向是一种永久重定向,浏览器会将这种重定向信息缓存起来,以便下次访问相同URL时直接跳转到目标URL,而不需要再次请求服务器。因此,即使你在服务器端取消了301重定向规则,浏览器仍然会根据缓存的重定向信息直接跳转到HTTPS页面。为了确保能够正常访问HTTP页面,需要清除浏览器的缓存......
  • 说说你对前端缓存策略的理解
    前端缓存策略旨在提高网页加载速度和用户体验,通过存储静态资源(如图片、CSS、JavaScript文件等)在浏览器或CDN等缓存层中,减少重复请求,从而缩短页面加载时间。一个好的缓存策略需要权衡缓存命中率、缓存空间占用、缓存失效机制等因素。以下是我对前端缓存策略的理解,涵盖几个关键......
  • 54.Python操作Redis缓存数据库
     (五十四)Python操作Redis缓存数据库 1:使用redis库操作Redis 安装 pipinstallredis string操作 示例1:单个stringimportredisclient=redis.StrictRedis(host='localhost',port=6379,db=0)result=client.set('robby',27)print(......
  • 说一说浏览器缓存
    缓存是性能优化中非常重要的一环,浏览器的缓存机制对开发也是非常重要的知识点。接下来以三个部分来把浏览器的缓存机制说清楚:强缓存协商缓存缓存位置强缓存浏览器中的缓存作用分为两种情况,一种是需要发送HTTP请求,一种是不需要发送。首先是检查强缓存,这个阶段不需要发送H......
  • 彻底理解布隆过滤器怎么解决缓存穿透问题
    一.业务背景实际业务中使用Redis,都是先通过用户插入数据到Mysql中,然后更新缓存到Redis,下一次用户再查询该数据的时候就可以通过Redis来进行查询。先看下图,是假设的一个用户查询的场景:首先用户查询的时候会去缓存里面查询,查看是否有该数据,如果不存在,就会去Mysql中查询,然后......
  • MetaGPT源码 (Memory 类)
    目录MetaGPT源码:Memory类例子MetaGPT源码:Memory类这段代码定义了一个名为Memory的类,用于存储和管理消息(Message)对象。Memory提供了多种操作消息的功能,包括添加单条或批量消息、按角色或内容筛选消息、删除最新消息、清空存储、按触发动作获取消息等。消息存......