什么是Web缓存,为什么要使用它
来源:互联网 发布:淘宝链接怎么做的 编辑:程序博客网 时间:2024/05/29 17:19
Web缓存游走于服务器和客户端之间。这个服务器可能是源服务器(资源所驻留的服务器Add),数量可能是1个或多个;这个客户端也可能是1个或多个。Web缓存就在服务器-客户端之间搞监控,监控请求,并且把请求输出的内容(例如html页面、 图片和文件)(统称为副本)另存一份;然后,如果下一个请求是相同的URL,则直接请求保存的副本,而不是再次麻烦源服务器。
使用缓存的2个主要原因:
- 降低延迟:缓存离客户端更近,因此,从缓存请求内容比从源服务器所用时间更少,呈现速度更快,网站就显得更灵敏。
- 降低网络传输:副本被重复使用,大大降低了用户的带宽使用,其实也是一种变相的省钱(如果流量要付费的话),同时保证了带宽请求在一个低水平上,更容易维护了。
Web缓存的类型
在任何现代浏览器上(如IE, FireFox, Chrome)折腾清除隐私数据(//zxx: 原文说的是首选项,显然out了,这里有改动)的对话框,你很可能会注意到“缓存”这个设置项。
浏览器会在你的硬盘上专门开辟一个空间专门为你存储资源副本。浏览器缓存的工作规则很简单:检查以确保副本是最新的,通常只要一次会话(就是当前浏览器调用的这次N)。
浏览器缓存在用户触发“后退”操作或点击一个之前看过的链接的时候很管用。同样,如果你在网站上访问同一张图片,该图片可以从浏览器缓存中调出并几乎立即显现出来。
2. 代理服务器缓存
Web代理服务器使用同样的缓存原理,只是规模更大。代理以同样的方式服务千万用户,大公司和ISP(Internet Server Provider, Internet服务提供商Add)经常在他们的防火墙或者单独的设备(也被称为中介(intermediaries))上架设代理缓存。
由于代理服务器缓存并非客户端或者源服务器的一部分,而是处于网络中,请求需要以某种方式路由到它们。一种方法是手动设置,告诉浏览器的你常用的代理服务器(//zxx: 翻墙的时候常用的),另外就是使用拦截。拦截代理(Interception proxies)把Web请求根据自己的底层网络重定向,因此,客户端无需配置,甚至都不需要知道它们。//zxx: 维基百科上提供的几种检测拦截代理服务器存在的方法add,您若有兴趣,可以点击这里查看。
代理缓存属于一种共享缓存;往往有大量的用户使用,因此,其在降低延时和网络流量上很有用,毕竟每个副本都被大量重用。//zxx: 这里我有疑问:就算是放在代理服务器上,每次获取还是要通过网络的啊,如何降低了网络流量呢?希望谁可以帮忙解惑下。
3. 网关缓存
也被称为“反向代理缓存”或“替代缓存”。网关缓存同样是起中介作用的,不过不是(素不相识、不曾谋面的Add)网络管理员部署的,而多半是网站管理员(公司专门的运维工程师、或UED或程序组某人Add)他们自己部署,这样更容易扩展与维护。
可以有多种方法把请求路由到网关缓存,但通常使用某种形式的负载均衡器①,使它们中的一个或多个看起来像是源服务器。内容分发网络②(CDNs)为整个网络(或部分)分配网关缓存,然后把这些缓存卖给需要的网站。Speedera③和Akamai④就是代表性的网络内容发布商。
- 什么是Web缓存,为什么要使用它
- 什么是名空间,为什么要使用它?
- 什么是dbunit以及为什么要使用它
- 什么是mvc,为什么要使用它
- 什么是WebPack,为什么要使用它?
- 什么是异常,我们为什么要关心它
- Web前端面试指导(二十八):什么是闭包,为什么要用它?
- 什么是线程?它与进程有什么区别?为什么要使用多线程?
- 什么是线程?它与进程有什么区别?为什么要使用多线程
- 什么是线程?它与进程的区别?为什么要使用多线程?
- 一、什么是NHibernate、为什么要用它及相关资源
- 什么是Ubuntu PPA以及为什么要用它[技术说明]
- 到底什么是VPN和究竟为什么它要
- 什么是Ubuntu PPA以及为什么要用它
- 什么是Ubuntu PPA以及为什么要用它[技术说明]
- CakePHP是什么?为什么要使用它呢?
- MQ--为什么使用它?
- 什么是连接池?我们为什么需要它?
- sigaction函数中 SA_NODEFER与sa_mask之间
- linux 常用指令
- androidのDOM方式解析XML
- 《Java并发编程实践》笔记6——并发性调优
- C++字符串操作集合
- 什么是Web缓存,为什么要使用它
- JAVA集合之——TreeSet
- BIN 转化为 S19 格式及 S19 格式解析
- CentOS 配置网络环境
- UNIX网络编程 卷2:进程间通信
- iOS代码文档化,比注释更高级!
- 纯虚函数和虚函数
- 我的第一篇技术BLOG
- unix环境高级编程---线程