1.什么是web缓存?
我的理解:由于处理器执行速度很快,为了避免花费大量的时间来等待网络请求资源,所以会在本地存放一些经常使用到的资源,这便是web缓存。
2. web缓存的作用?
- 显而易见的,加快页面打开速度。
- 减少带宽,因为资源大部分都在本地了,不用进行网络请求资源。
- 减少服务器压力,减少频繁访问服务器。
3. web缓存有哪些?
- 数据库缓存
避免频繁的数据库查询,将查询的数据放入内存中,下次从内存中直接返回。
- 服务器缓存
服务器缓存一些经常会被用的资源,当多个用户访问时,因为他们共同需要访问的资源已经被缓存了,可以有效降低服务器压力。
- 浏览器缓存
缓存一些最近用到的图片,数据,页面等,提高网页打开速度。
4. http中的缓存机制
4.1 http1.0中
Pragma
判断是否使用缓存Expires
代表缓存的过期日期
由这两样就可以知道,是否使用缓存,还有缓存的到期时间。
4.2 http1.1中
-
Cache-Control
代替了Pragma,它有好几个参数, -
- no-store:禁止所有缓存
-
- no-chche:不管缓存是否过期,都不用缓存。
-
- max-age:缓存的有效时间
从上面我们会发现,我们缓存了资源,但浏览器却不知道资源是不是被更新了,是否需要加载新的资源。所以就有了下面的东西。
4.3 Last-Modified/If-Modified-Since
Last-Modified
:表示资源的最后修改时间If-Modified-Since
:当资源过期的时候,浏览器就会带上这个key
,value
就是Last-Modified
.- 服务器接收后进行判断,资源是否更新过了。
-
- 若更新过,返回新的资源,200,和新的最后修改时间
-
- 若无更新,返回304
4.4 Etag/If-None-Match
另一种判断资源是否更新过的方式
Etag
:服务器给每个资源的唯一标识If-None-Match
:同样的,浏览器带上Etag标识,服务器进行判断,决定返回200,还是304.
4.5 两者的优缺点
- Etag需要服务器运算,所以会销毁服务器性能。
- Last-Modified以秒为单位,但有时资源会在一秒内,频繁变更的情况,这样便失去了缓存了作用。
5. cookie
- 我们都使用的cookie,将一些数据存储到其中,然后在作为头部发送出去。
优点:
- 键值对存储,使用简单
- 可以配置过期的时间
缺点:
- 大小有限制,通常只有4k.
- 存在安全问题,cokkie可以被篡改。
6 web stroage
webStorage 里分为
sessionStorage
和localStorage
sessionStorage
:看名字就知道啦,每个session会话中都有个独立的存储空间,当会话结束就没有啦。localStorage
:本地的存储空间,即便浏览器关闭了,在打开时,数据也仍然存在。
7. indexdDB
浏览器提供的本地数据库,可以存储更多的数据,还可以创建索引。
- indexedDB有一些优点:
- 异步
- 键值对存储
- 事务,可以回滚。
- 空间大呀
总结
算是简单的理解了web缓存的一些知识,这方面的文章其实挺多的,有兴趣大家可以在网上找到很多,先占个坑,下次有时间在来实操下,12咯,祝大家元旦快乐。