当前位置: 首页 > Web前端 > HTML5

Web前端静态资源缓存笔记

时间:2023-04-05 16:03:47 HTML5

按照webkit资源的分类,webkit资源分类主要分为两大类:主资源和派生资源。主资源:比如HTML页面,或者下载项,对应代码中的类是MainResourceLoader。派生资源:比如HTML页面中嵌入的图片或脚本链接,对应代码中的类为SubresourceLoader。根据HTTP状态码分类200(frommemorycache)200(fromdiskcache)304(NotModified)200(frommemorycache)不访问服务器,直接读取缓存,从内存中读取缓存。此时的数据缓存在内存中。kill进程后,即浏览器关闭后,数据将不存在。Webkit虽然支持memoryCache,但只是针对派生资源。它对应的类是CachedResource,用于保存原始数据(如CSS、JS等)和解码后的图片数据。200(fromdiskcache)不访问服务器,直接从磁盘读取缓存。当进程被杀死时,数据仍然存在。它的直接操作对象是CurlCacheManager。这种方法也只缓存派生资源。它的存储形式是一个index.dat文件,里面记录了存储数据的url,然后分别存储响应信息和url的内容。Response信息最大的作用是判断服务器上的url内容是否被修改。详见:Last-Modified304(NotModified)访问服务器发现数据未更新,服务器返回此状态码。然后从缓存中读取数据。至于什么时候使用本地缓存,什么时候访问服务器304,这个跟请求中服务器返回的Header字段有关。附上我的HTTP学习笔记。httpheadermax-ageweb中的文件在被用户访问(请求)后的存活时间是一个相对值,相对于Request_time(请求时间)ExpiresExpires指定的时间根据服务器配置可能有两种类型:最后一次访问文件的time和文件的绝对修改时间如果max-age和Expires同时存在,会被Cache-Control的max-age覆盖Last-modifiedWEB服务器考虑对象的最后修改时间,比如文件的最后修改时间和动态页面ETag对象(如URL)的最后生成时间标记值,对于一个对象来说,如果文件被修改,Etag也会随之修改。Cache-Control简单理解就是强缓存和三级缓存的原理先看内存。如果有,直接加载。如果没有内存,选择硬盘获取。Load如果没有硬盘,则进行网络请求,将资源缓存加载到硬盘和内存中。结语引用在线图片