内容简介: 我国的互联网处于飞速发展时期,网民队伍飞速扩大,举个栗子,家里的小学生跟爷爷一代都已经成为了使用智能手机获取互联网资源的新兴势力。庞大的网民群体必然要求主流或者想成为主流的互联网企业具备承载海量并发访问的能力,但是单纯增加原始内容服务器数量去应对海量并发并不是有性价比的解决方案,因此各类缓存技术应运而生且诞生了一个口号“缓存为王”。 http协议缓存机制是指通过HTTP协议头里的 Cache-Control(或 Expires)和 Last-Modified(或 Etag)等字段来控制文件缓存的机制
Varnish与web架构实践
一、前言
我国的互联网处于飞速发展时期,网民队伍飞速扩大,举个栗子,家里的小学生跟爷爷一代都已经成为了使用智能手机获取互联网资源的新兴势力。庞大的网民群体必然要求主流或者想成为主流的互联网企业具备承载海量并发访问的能力,但是单纯增加原始内容服务器数量去应对海量并发并不是有性价比的解决方案,因此各类缓存技术应运而生且诞生了一个口号“缓存为王”。
二、http协议缓存原理
http协议缓存机制是指通过HTTP协议头里的 Cache-Control(或 Expires)和 Last-Modified(或 Etag)等字段来控制文件缓存的机制。缓存会根据请求保存输出内容的副本,例如html页面,图片,文件,当下一个请求来到的时候:如果是相同的URL,缓存直接使用副本响应访问请求,而不是向源服务器再次发送请求。
常用首部:
-
Expires:指示响应内容过期的时间,格林威治时间GMT。
-
Cache-Control:用于更精细地控制 本地缓存的相关设置。
- 比如Cache-Control:max-age=600表示文件在本地缓存,且有效时长是600秒(从发出请求算起)。在接下来600秒内,如果有请求这个资源,浏览器不会发出HTTP请求,而是直接使用本地缓存的文件(强缓存)。
- 所以判断缓存是否过期步骤是:
- 查看是否有cache-control 的max-age / s-maxage , s-maxage(share cache即public缓存最大保留时间)如果有,则用服务器时间date值 + max-age/s-maxage 的秒数计算出新的过期时间,将当前时间与过期时间进行比较,判断是否过期。
- 如果没有cache-control 的max-age / s-maxage,则用expires 作为过期时间比较。
-
Last-Modified:标识文件在服务器上的最后一次更新时间。收到请求时,如果文件缓存过期,浏览器通过If-Modified-Since字段带上这个时间,发送给服务器,由服务器比较时间戳来判断文件是否有修改。如果没有修改,服务器返回304告诉浏览器继续使用缓存(协商缓存);如果有修改,则返回200,同时返回最新的文件。
-
Etag:web服务器响应请求时,告诉浏览器当前资源在服务器的唯一标识(生成规则由服务器决定)。Apache中,ETag的值,默认是对文件的索引节(INode),大小(Size)和最后修改时间(MTime)进行Hash后得到的。为什么要使用Etag主要是为了解决以下问题:
-
如果某些文件会被定期生成,有时内容并没有任何变化,但Last-Modified却改变了,导致缓存未命中。
-
Last-Modified标注的最后修改只能精确到秒级,如果某些文件在1秒钟以内,被修改多次的话,它将不能准确标注文件的修改时间。
-
Last-Modified与ETag是可以一起使用的,服务器会优先验证ETag,一致的情况下,才会继续比对Last-Modified,最后才决定是否返回304。
-
-
no-cache :并不是说限定的资源不能缓存,而是要求浏览器必须发出条件式请求进行缓存有效性验证,所以不能结合expires使用。
-
no-store :所限定的资源不允许缓存
三、Varnish简介
Varnish是一款高性能的轻量级开源web cache加速器,常见的缓存技术有Varnish与Squid,两者的关系类似于Nginx与Httpd。Squid是一种更早更重量级的缓存技术,本文仅展示varnish的简单应用。
本文来自投稿,不代表 Linux 运维部落立场,如若转载,请注明出处:http://www.178linux.com/103828
以上所述就是小编给大家介绍的《Varnish与web架构实践(施工中)》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- 基于 CSE 的微服务架构实践:基础架构
- 典型数据库架构设计与实践 | 架构师之路
- 『互联网架构』软件架构-rocketmq之实践(62)
- HBase实践 | 数据人看Feed流-架构实践
- 架构实践全景图
- 微服务架构最佳实践
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
圈圈教你玩USB
刘荣 / 2013-4 / 59.00元
通过U盘、USB鼠标、15SB键盘、USBMIDI键盘、USB转串口、自定义的USBHID设备和自定义的USB设备等几个具体的USB例子,一步步讲解USB设备及驱动程序和应用程序开发的详细过程和步骤。第9和10章介绍USBWDM驱动开发,并给出一个简单的USB驱动和USB上层过滤驱动的实例。第2版中新增4章内容,包括USB触摸屏设备、移植到AVR单片机和ARM微控制器上以及更多的USB设备的实现。......一起来看看 《圈圈教你玩USB》 这本书的介绍吧!