
课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
缓存功能的应用在许多软件编程开发项目中都是必不可少的一个功能组件,我们在学习软件开发的时候也需要重点掌握缓存的用法,下面我们就通过案例分析来简单了解一下,HTTP缓存的概念与类型。
Http缓存其实就是浏览器保存通过HTTP获取的所有资源,
是浏览器将网络资源存储在本地的一种行为。
请求的资源在哪里?
6.8kB+200状态码:没有命中缓存,实际的请求,从服务器上获取资源;
memorycache:资源缓存在内存中,不会请求服务器,一般已经加载过该资源且缓存在内存中,当关闭页面时,此资源就被内存释放掉了;
diskcache:资源缓存在磁盘中,不会请求服务器,但是该资源也不会随着关闭页面就释放掉;
304状态码:请求服务器,发现资源没有被更改,返回304后,资源从本地取出;
serviceworker:应用级别的存储手段;
HTTP缓存分类
1.强缓存
浏览器加载资源时,会先根据本地缓存资源的header中的信息判断是否命中强缓存。如果命中,则不会像服务器发送请求,而是直接从缓存中读取资源。
强缓存可以通过设置HTTPHeader来实现:
http1.0→Expires:响应头包含日期/时间,即在此时候之后,响应过期。
http1.1→Cache-Control:max-age=:设置缓存存储的大周期,超过这个时间缓存被认为过期(单位秒)。与Expires相反,时间是相对于请求的时间
Cache-control
cache-control:max-age=3600:表示相对时间
cache-control:no-cache→可以存储在本地缓存的,只是在原始服务器进行新鲜度在验证之前,缓存不能将其提供给客户端使用
cache-control:no-store→禁止缓存对响应进行复制,也就是真正的不缓存数据在本地;
catch-control:public→可以被所有用户缓存(多用户共享),包括终端、CDN等
cache-control:private→私有缓存
2.协商缓存
当浏览器对某个资源的请求没有命中强缓存,就会发一个请求到服务器,验证协商缓存是否命中,如果协商缓存命中,请求返回的http状态304,并且会显示NotModified的字符串;
协商缓存通过【last-Modified,if-Modified-Since】与【ETag,if-None-Match】来管理的。
「Last-Modified、If-Modified-Since」
last-Modified:表示本地文件后修改的日期,浏览器会在请求头中带上if-Modified-since(也是上次返回的Last-Modified的值),服务器会将这个值与资源修改的时间进行匹配,如果时间不一致,服务器会返回新的资源,并且将Last-modified值更新,并作为响应头返回给浏览器。如果时间一致,表示资源没有更新,服务器会返回304状态,浏览器拿到响应状态码后从本地缓存中读取资源。
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。更多内容请加danei0707学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。