Web缓存
Web缓存是指一个Web资源(如HTML页面,图片,css,js等)存在于Web服务器和客户端之间的副本。缓存会根据进来的请求保存输出内容的副本;当下一个请求来到的时候,如果是相同的URL,缓存会根据缓存机制决定是直接使用副本响应还是向源服务器再次发送请求。
1.Web缓存的作用
Web缓存的作用是显而易见的:
2.Web缓存的类型
1.数据库缓存
如果频繁地进行数据库的查询,很可能导致数据库不堪重负。为了提供查询的性能,会将查询后的数据放到内存中进行缓存,下次查询时,直接从内存缓存返回,提高响应效率。
2.代理服务器端缓存
代理服务器是浏览器和源服务器之间的中间服务器,浏览器先向这个中间服务器发起Web请求,经过处理后,再讲请求转发给源服务器。代理服务器的运作原理跟浏览器差不多,只是规模更大,可以看做是一个共享缓存,不只为一个用户服务,一般为大量用户提供服务。
3.CDN缓存
CDN缓存一般是由网站管理员自己部署,为了让他们的网站更容易扩展并获得更好的性能。浏览器先向CDN网关发起Web请求,网关服务器后面对应着一台或多台负载均衡服务器,会根据他们的负载请求,动态将请求转发到合适的源服务器上。虽然这种架构负载均衡源服务器之间的缓存没法共享,但却拥有更好的扩展性。从浏览器角度来看,整个CDN就是一个源服务器,从这个层面来说,浏览器和服务器之间的缓存机制,在这种架构下同样适用。
4.浏览器端缓存
浏览器缓存根据一套与服务器约定的规则进行工作,在同一个会话过程中检查一次并确定缓存的副本足够新。
5.Web应用层缓存
应用层缓存指的是从代码层面上,通过代码逻辑和缓存策略,实现对数据、页面、图片等资源的缓存,可以根据实际情况选择将数据存在文件系统或者内存中,减少数据库查询或者读写瓶颈,提高响应效率。
3.Web浏览器的缓存机制
4.创建可缓存站点
我们可以从下面这些方面去改善我们的站点,保证缓存被最有效的利用,达到最佳的性能。
1.同一资源保证URL的稳定性
URL是浏览器缓存机制的基础,所以如果一个资源需要在多个地方被引用,尽量保证URL是固定的。
2.给CSS,js,img等资源增加HTTP缓存头,并强制入口HTML不被缓存
对于不常修改的静态资源,比如css等,可以设置一个较长的过期时间,或者至少加上Last-Modified/Etag,而对html页面这种入口文件,不建议设置缓存。这样既能保证在静态资源不改变的情况下,不会重发请求或直接304避免重复下载,又能保证在资源有更新的时候只要通过更换资源路径,就能让用户访问最新资源。
3.减少对Cookie的依赖
过多的使用Cookie会大大增加HTTP请求的负担,每次GET或POST请求,都会把Cookie带上,增加网络传输流量和交互时长。同时,Cache是很难被缓存的,应该尽量少使用,或者在动态页面上使用。
4.多使用GET方法
GET方法更高效,也能被缓存,建议对于那些不涉及敏感信息提交的请求尽量使用GET方式请求。
5.离线存储
1.Application Cache
利用manifest文件指定需要缓存的文件。用户可在离线的情况下访问应用,加载速度很快。
优点:离线浏览,访问速度快,减少服务端数据加载。
缺点:Manifest文件变化时才更新,一次必须更新Manifest的所有文件,下次才生效。
2.Local Storage
Local storage可以使我们在浏览器保存数据。
优点:容量大、易用、强大、原生支持、本地保存。
缺点:兼容性和安全性差。
3.Web SQL
Web SQL是在html5环境下可以用js执行的web数据库。数据库的核心是SQLite。
优点:本地数据库,可以处理复杂的关系型数据库。
缺点:兼容性差,支持的浏览器少。
4.IndexedDB
IndexedDB是结构化的本地储存,采用了键值存储和基本的索引。
优点:标准化,存储复杂数据,支持索引。
缺点:不支持SQL,操作复杂。
6.参考文献
Last updated