web缓存

来源:互联网 发布:linux shutdown命令 编辑:程序博客网 时间:2024/06/08 00:06

1什么是缓存?

缓存就是服务端和客户端的公共临时空间它里面可以临时存放(图片,文件,html,css,js等)如果客户端发起一个新的请求,这个请求会先对比去这个公共的空间去对比url,如果相同的url就直接去那个空间拿素材不需要再次跑到服务端那里拿。

2缓存的优点?

1-降低延迟
因为请求是由客户端发起的!假设每次请求都向服务端握手!假设有M个人同时向服务端握手!那服务端肯定鸭梨山大但是有了缓存就很好的解决了这问题
2-降低网络传输
因为临时空间是可复用的所以降低了宽带,同时保证了带宽请求在一个低水平上,更容易维护了

3缓存的缺点?

1-相对开发者来说每次测试的时候都要清除缓存比较麻烦!做过微信开发就深有体会了!我的解决方法是在url后面拼接一个动态的随机数、更改文件夹的版本号、如果是非微信开发可以利用谷歌插件(simpleClear)清除缓存
2-网站管理员想获取用户的访问来源,统计访问人数等

4缓存类型?

1-浏览器缓存
浏览器会在你的硬盘开辟一个空间专门存储你的临时请求文件,浏览器的缓存工作规则:检查以确保临时空间里面的文件是最新的,通常只要一次会话
2.代理服务器缓存
代理服务器使用同样的缓存原理,大公司一般在他们的防火墙或者单独的设备上架设代理缓存由于代理服务器缓存并非客户端或者源服务器的一部分,而是处于网络中,请求需要以某种方式路由到它们,一种方法是手动设置,告诉浏览器的你常用的代理服务器另外就是使用拦截把Web请求根据自己的底层网络重定向(代理缓存属于一种共享缓存)
3.网关缓存
网关缓存:“反向代理缓存”或“替代缓存”网关缓存同样起中介作用!可以有多种方法把请求路由到网关缓存例如:负载均衡器,内容分发网络

5缓存的说明

1-响应头明确说明
2-如果请求信息是需要认证或者安全加密的(如, HTTPS),相应内容也不会被缓存
3-缓存如果有以下表现,则认为是fresh新鲜的(无需检查源服务器,直接发送给客户端):
含有完整的过期时间和寿命控制头信息,并且内容仍在保鲜期内,或者缓存最近已展现,并且在不久前修改。
4-若内容陈旧,则会要求源服务器做验证 validate ,或者告诉缓存其拷贝副本是否是OK的
5-特定情况下——例如,断网了,之前有过的响应缓存直取而不检查源服务器
新鲜度freshness和校验validation是确定缓存内容是否可用的最重要途径。

6缓存的建立

HTML重构人员可以在文档的中添加标签进行描述。这些meta标签通常用来标记不可缓存或过期时间。
1-HTML Meta标签(Meta标签使用简单,但效果一般代理缓存基本上就不访问HTML文档)
2-HTTP头信息可以让你对浏览器和代理服务器如何处理你的副本进行更多的控制,他们在HTML代码中是看不见的,一般由Web服务器自动生成
3-使用Expires HTTP头信息控制不过期
4-Pragma HTTP头信息(以及为什么不起作用)

7验证器和验证

服务器以及缓存通过验证来判断内容是否改变,在不确定内容是否过期的时候,可以避免本地已经存在副本的时候下载整个内容。
验证器是很重要的,如果一个都没有,同时没有可用的新鲜度信息(Expires或Cache-Control),缓存一点儿都不会存储内容。
最常见的验证是通过Last-Modified头信息通信确定文档最后的修改时间,如果缓存有内容存储,会包含Last-Modified信息的,辅助If-Modified-Since请求,我们可以询问服务器内容是否改变了。

本文转自:
http://www.zhangxinxu.com/wordpress/2013/05/caching-tutorial-for-web-authors-and-webmasters/

原创粉丝点击