首页 > 其他分享 >请描述下application cache的更新过程?

请描述下application cache的更新过程?

时间:2024-11-25 09:23:10浏览次数:9  
标签:文件 缓存 浏览器 更新过程 cache 更新 manifest application

Application Cache,或者说是 AppCache,是一个已经被废弃的 HTML5 特性,用于离线存储网页资源。由于其更新机制复杂且容易出错,它已经被 Service Workers 和 Cache API 取代。 尽管如此,如果您仍然需要了解其更新过程,以下是其工作原理:

  1. manifest 文件检查: 浏览器会定期检查 manifest 文件(在 HTML 中通过 <html manifest="manifest.file"> 指定)是否有更新。 这个检查的频率和具体实现取决于浏览器,但通常不会过于频繁,以避免额外的网络请求。

  2. manifest 文件下载和比较: 如果浏览器发现 manifest 文件的 URL 发生了变化(即使内容不变),或者 manifest 文件本身的内容发生了变化 (例如,文件校验和不同),浏览器会下载新的 manifest 文件。

  3. 资源下载: 浏览器会解析新的 manifest 文件,并下载其中列出的所有已更新或新增的资源。 "更新" 的判断依据是资源的 URL 是否相同,以及 manifest 文件中为资源指定的明确版本信息(例如,通过 query string 或文件名)。

  4. 缓存更新: 只有当 所有 新 manifest 文件中列出的资源都成功下载后,浏览器才会用新的缓存替换旧的缓存。 这被称为 原子更新,目的是防止出现缓存不一致的情况。

  5. 页面重新加载: 缓存更新完成后,浏览器会自动重新加载页面,以使用新的缓存。 这通常会导致用户感知到短暂的延迟或闪烁。

AppCache 更新的常见问题:

  • 缓存更新不及时: 由于 manifest 文件的检查频率不固定,用户可能无法立即获得最新的网页内容。
  • 难以调试: AppCache 的更新过程相对黑盒,难以调试。 开发者通常需要清除浏览器缓存才能强制更新。
  • 部分缓存更新失败: 如果任何一个资源下载失败,整个缓存更新都会失败,导致用户继续使用旧的缓存。
  • 用户体验不佳: 由于需要重新加载页面,AppCache 的更新过程可能会对用户体验造成负面影响。

建议:

强烈建议不要使用 AppCache。 请使用 Service Workers 和 Cache API 来实现离线应用。 它们提供了更灵活、更可靠、更易于调试的离线存储方案。

希望这个解释对您有所帮助。

标签:文件,缓存,浏览器,更新过程,cache,更新,manifest,application
From: https://www.cnblogs.com/ai888/p/18566906

相关文章

  • 黑马头条Day4-19启动ApArticleApplication时报错some of the beans in the applicatio
    文章目录1.错误呈现2.错误原因3.解决方案(注入ApArticleService改成注入ApArticleMapper)视频教程:黑马程序员Java项目实战微服务项目《黑马头条》开发全套视频教程,基于SpringBoot+SpringCloud+Nacos等企业级微服务架构项目解决方案1.错误呈现APPLICATIONFAILED......
  • Springboot启动失败问题:Application run failed(jdk原因)
    以下代码报错ErrorstartingApplicationContext.Todisplaytheconditionsreportre-runyourapplicationwith'debug'enabled.2024-10-1921:56:55.234ERROR16584---[main]o.s.boot.SpringApplication:Applicationrunfailed......
  • Java自定义函数查看OS的File Cache — 从原理到实战
    全文目录:开篇语......
  • [java/spring/web] 深入理解:Spring @ExceptionHandler => 自定义应用异常处理器(Appli
    1概述:Spring@ExceptionHandler∈spring-web作用ExceptionHandler是Spring框架(spring-web模块)提供的一个注解,用于处理应用程序中的异常。当应用程序中发生异常时,ExceptionHandler将优先地拦截异常并处理它,然后将处理结果返回到前端。该注解可用于类级别和方法级别,以......
  • Python cachetools常用缓存算法汇总
    文章目录cachetools介绍缓存操作设置数据生存时间(TTL)自定义缓存策略缓存装饰器缓存清理cachetools超过缓存数量maxsizecachetools使用示例cachetools介绍cachetools:是一个Python第三方库,提供了多种缓存算法的实现。缓存是一种用于临时存储计算结果的技术,以......
  • IntelliJ IDEA(IDEA)下无法解析 ApplicationContext 中的方法 getBean
    只需要:删除过程目录下的.idea文件后,关闭IDEA,再重新打开IDEA即可解决“getBean”报红问题。(注意:前提是要保证有依赖(Spring核心库配置正确、依赖版本兼容)、配置正确(ApplicationContext 创建正确、有 Bean定义、扫描包正确)、编码问题(导入正确的类、方法调用正确))以上原理:.i......
  • 【Java】使用Ehcache缓存。
    EhCache是一个纯Java的进程内缓存框架,具有快速、精干等特点。当我们需要频繁使用某些数据时,我们可以将这些数据放到缓存中,下次取数据的时候,直接从缓存中取,这样可以节省不少时间。如果我们自己手动进行缓存的管理将是比较棘手的的,因为这已经涉及到很多底层的技术了,但是Ehcache为我......
  • k8s cache.DeletedFinalStateUnknown
    针对已删除对象Obj,删除事件因与apiserver断连而丢失,DeletedFinalStateUnknown只会在relist时可能出现,缓存了已被删除对象,放入DeltaFIFO,删除本地缓存对象。relist场景1:watch超时时间内没有收到事件。2:watch指定的resourceVersion在etcd已不存在。3:apiserver主动与client-go断连,避......
  • Guava Cache
    1GuavaCache介绍Guava是Google提供的一套JAVA的工具包,而GuavaCache则是该工具包中提供的一套完善的JVM级别的高并发缓存框架。其实现机制类似ConcurrentHashMap,但是进行了众多的封装与能力扩展。作为JVM级别的本地缓存框架,GuavaCache具备缓存框架该有的众多基......
  • Error starting ApplicationContext. To display the conditions report re-run your
    问题原因:通过springboot的启动类来启动springboot项目时,报错。但是通过mavenpackeage打包后,再启动没有问题。org.springframework.beans.factory.UnsatisfiedDependencyException:Errorcreatingbeanwithname'applicationRunnerImpl':Unsatisfieddependencyexpressedth......