认识HTTP----缓存篇,第1张

本文内容大多参考 《图解HTTP》一书

所以讲缓存为什么要先扯代理服务器?别急,让我们看一下一个请求的简单示意图。

我们看到客户端(用户)发送了一个请求并不是直接发给源服务器的而是经过了代理服务器,然后经由代理服务器再发送给源服务器,响应也同样遵循这个顺序。

那么代理服务器在这中间担任了什么角色?

缓存是指代理服务器或客户端本地磁盘内保存的资源副本。利用缓存可减少对源服务器的访问,因此也就节省了通信流量和通信时间。

缓存服务器是代理服务器的一种,并归类在缓存代理类型中。换句话说,当代理转发从服务器返回的响应时,代理服务器将会保存一份资源的副本。

缓存服务器的优势在于利用缓存可避免多次从源服务器转发资源。因此客户端可就近从缓存服务器上获取资源,而源服务器也不必多次处理相同的请求了。

即便缓存服务器和客户端内有缓存,也不能每次都给我返回缓存吧,如果是这样,源服务器更新了我也不知道,因为我每次都是看缓存的资源。

为了解决这个问题,针对缓存设计了时效性的概念:

即使存在缓存,也会因为客户端的要求、缓存的有效期等因素,向源服务器确认资源的有效性。若判断缓存失效,缓存服务器将会再次从源服务器上获取“新”资源。

缓存不仅可以存在于缓存服务器内,还可以存在客户端浏览器中。以Internet Explorer 程序为例,把客户端缓存称为临时网络文件(Temporary Internet File)。

浏览器缓存如果有效,就不必再向服务器请求相同的资源了,可以直接从本地磁盘内读取。

另外,和缓存服务器相同的一点是,当判定缓存过期后,会向源服务器确认资源的有效性。若判断浏览器缓存失效,浏览器会再次请求新资源。

Pragma 是HTTP/11 之前版本的历史遗留字段,仅作为与HTTP/10的向后兼容而定义。

规范定义的形式唯一,如下所示。

Pragma: no-cache

该首部字段属于通用首部字段,但只用在客户端发送的请求中。客户端会要求所有的中间服务器不返回缓存的资源。

通过指定首部字段Cache-Control 的指令,就能操作缓存的工作机制。

可用的指令按请求和响应分类如下所示:

public指令

Cache-Control: public

当指定使用public 指令时,则明确表明其他用户也可利用缓存。

private指令

no-store指令

Cache-Control: no-store

当使用no-store 指令时,暗示请求(和对应的响应)或响应中包含机密信息。

因此,该指令规定缓存不能在本地存储请求或响应的任一部分。

ps:从字面意思上很容易把no-cache误解成为不缓存,但事实上no-cache代表不缓存过期的资源,缓存会向源服务器进行有效期确认后处理资源,也许称为do-not-serve-from-cache-without-revalidation更合适。no-store 才是真正地不进行缓存,请读者注意区别理解。

s-maxage指令

Cache-Control: s-maxage=604800 //(单位:秒)

s-maxage 指令的功能和max-age 指令的功能相同, 它们的不同点是s-maxage 指令只适用于供多位用户使用的公共缓存服务器(这里指代理服务器)。也就是说,对于向同一用户重复返回响应的服务器来说,这个指令没有任何作用。

另外,当使用s-maxage 指令后,则直接忽略对Expires 首部字段及max-age 指令的处理。

max-age指令

cache-extension token

Cache-Control: private, community="UCI"

通过 cache-extension 标记(token),可以扩展Cache-Control 首部字段内的指令。

如上例,Cache-Control 首部字段本身没有community 这个指令。借助extension tokens 实现了该指令的添加。如果缓存服务器不能理community 这个新指令,就会直接忽略。因此,extension tokens 仅对能理解它的缓存服务器来说是有意义的。

If-Unmodified-Since: Thu, 03 Jul 2012 00:00:00 GMT

首部字段If-Unmodified-Since 和首部字段If-Modified-Since 的作用相反。它的作用的是告知服务器,指定的请求资源只有在字段值内指定的日期时间之后,未发生更新的情况下,才能处理请求。如果在指定日期时间后发生了更新,则以状态码412 Precondition Failed 作为响应返回。

ps:Last-Modified 存在一定问题,如果在服务器上,一个资源被修改了,但其实际内容根本没发生改变,会因为Last-Modified时间匹配不上而返回了整个实体给客户端(即使客户端缓存里有个一模一样的资源)。

首部字段If-None-Match 属于附带条件之一。它和首部字段If-Match 作用相反。用于指定If-None-Match 字段值的实体标记(ETag)值与请求资源的ETag 不一致时,它就告知服务器处理该请求。

在GET 或HEAD 方法中使用首部字段If-None-Match 可获取最新的资源。因此,这与使用首部字段If-Modified-Since 时有些类似。

不与服务器确认,而是直接使用浏览器缓存的内容。其中响应内容和之前的响应内容一模一样,例如其中的Date时间是上一次响应的时间。

F5的作用和直接在URI输入栏中输入然后回车是不一样的,F5会让浏览器无论如何都发一个HTTP Request给Server,即使先前的响应中有Expires头部。

Ctrl+F5要的是彻底的从Server拿一份新的资源过来,所以不光要发送HTTP request给Server,而且这个请求里面连If-Modified-Since/If-None-Match都没有,这样就逼着Server不能返回304,而是把整个资源原原本本地返回一份,这样,Ctrl+F5引发的传输时间变长了,自然网页Refresh的也慢一些。

Cache-Control 是 HTTP11 才有的,不适用于 HTTP10,而 Expires 既适用于 HTTP10,也适用于 HTTP11,所以说在大多数情况下同时发送这两个头会是一个更好的选择,当客户端两种头都能解析的时候,会优先使用 Cache-Control。

二者都是通过某个标识值来请求资源, 如果服务器端的资源没有变化,则自动返回 HTTP 304 (Not Changed)状态码,内容为空,这样就节省了传输数据量。当资源变化后则返回新资源。从而保证不向客户端重复发出资源,也保证当服务器有变化时,客户端能够得到最新的资源。

其中Last-Modified使用文件最后修改作为文件标识值,它无法处理文件一秒内多次修改的情况,而且只要文件修改了哪怕文件实质内容没有修改,也会重新返回资源内容;ETag作为“被请求变量的实体值”,其完全可以解决Last-Modified头部的问题,但是其计算过程需要耗费服务器资源。

Expires和Cache-Control都有一个问题就是服务端的修改,如果还在缓存时效里,那么客户端是不会去请求服务端资源的(非刷新),这就存在一个资源版本不符的问题,而强制刷新一定会发起HTTP请求并返回资源内容,无论该内容在这段时间内是否修改过;而Last-Modified和Etag每次请求资源都会发起请求,哪怕是很久都不会有修改的资源,都至少有一次请求响应的消耗。

对于所有可缓存资源,指定一个Expires或Cache-Control max-age以及一个Last-Modified或ETag至关重要。同时使用前者和后者可以很好的相互适应。

前者不需要每次都发起一次请求来校验资源时效性,后者保证当资源未出现修改的时候不需要重新发送该资源。而在用户的不同刷新页面行为中,二者的结合也能很好的利用HTTP缓存控制特性,无论是在地址栏输入URI然后输入回车进行访问,还是点击刷新按钮,浏览器都能充分利用缓存内容,避免进行不必要的请求与数据传输。

做法很简单,就是把可能会更新的资源以版本形式发布,常用的方法是在文件名或参数带上一串md5或时间标记符:

可以看到上面的例子中有不同的做法,有的在URI后面加上了md5参数,有的将md5值作为文件名的一部分,有的将资源放在特性版本的目录中。

那么在文件没有变动的时候,浏览器不用发起请求直接可以使用缓存文件;而在文件有变化的时候,由于文件版本号的变更,导致文件名变化,请求的url变了,自然文件就更新了。这样能确保客户端能及时从服务器收取到新修改的文件。通过这样的处理,增长了静态资源,特别是资源的缓存时间,避免该资源很快过期,客户端频繁向服务端发起资源请求,服务器再返回304响应的情况(有Last-Modified/Etag)。

这是两种主要的Web缓存:

直接缓存,将用户频繁访问的来自Internet服务器的Web对象的拷贝保存在企业本地网络中。

反向缓存,企业内部Web服务器的Web对象的拷贝保存在企业网络边缘的代理服务器上以提高外界访问企业站点的性能。

Web缓存可以根据不同等级进行配置:

本地缓存:将Web对象缓存的拷贝保存在本地计算机中。大多数流行的Web浏览器默认情况下保留一个先前访问对象的缓存。例如,Internet Explorer称之为“临时Internet文件”。本地缓存拷贝只是在用户频繁地从同一台机器访问页面时有用。

代理缓存:代理服务器是为公司内的多个用户/客户计算机缓存Web对象的单独机器。它们是位于客户端和托管的Web服务器之间的计算机,而且它们比本地缓存效率更高,因为在企业本地网络中的任何用户或计算机访问某个Web对象时,缓存拷贝对想访问该对象的任何其他用户/计算机是可用的,无需到Internet服务器上再次下载它。代理缓存可以在网络边缘与防火墙结合使用。

微软的ISA Server和BlueCoat的工具一样,既包括防火墙也包括缓存代理服务器。缓存服务器也可以是单独的机器,运行免费的缓存软件或商业产品,例如:

Linux版的Squid免费缓存代理

MOWS基于Java分布式web和缓存服务器

Vicomsoft RapidCache Server for Windows或Macintosh

WinProxy for Windows

可升级的缓存解决方案

随着公司的扩大,单一的Web缓存服务器可能无法处理所有的通信或存储足够的Web对象。在这种情况下,可以扩展缓存解决方案以建立一个缓存阵列——一组共同工作以便在组内分配缓存负载的缓存代理服务器。万一某个缓存服务器停机,还提供缺省的容量。

要在阵列中操作,缓存服务器必须能够彼此使用协议进行通信,例如:

WCCP(Web缓存协调协议),Cisco缓存产品以及诸如Squid这样的开源代理使用。

ICP(Internet缓存协议),被Squid和BlueCoat支持。

CARP(缓存阵列路由协议),被ISA Server Enterprise Edition用来管理缓存服务器阵列的失效转移和负载平衡。

CARP能够支持几乎无限的线性扩展以满足快速增长型企业的需求。当向某个阵列中添加或移除一台服务器时,CARP自动调整并再指定URL以有效地分布负载。

缓存阵列能够以等级的或分布式的架构排列。在分布式缓存中,阵列中所有代理服务器处在一个“平等地位”而且负载在它们之间进行分配。在分等级的缓存中,代理以链式进行配置,它们处在不同的等级,所以服务器或阵列连接到其它离Internet更近的服务器或阵列(离Internet最近的那些服务器或阵列被看作“上游的”,那些最远的被看作“下游的”)。这样,缓存内容会尽可能地靠近需要它的用户。

阵列是高度可升级的,因为可以向阵列添加服务器,或向分等级的架构增加阵列等级,而无需扰乱目 前的缓存解决方案。

另一个可扩展性问题是使用缓存减少分支机构网络带宽的能力。分支机构代理可能没有直接连接到Internet,但是可以使用拨号连接或办公室到办公室的WAN连接以便从总公司的上游代理服务器上请求Web对象。

另一个选择是为需要向消费者提供基于Web的应用,可使用诸如由Akamai提供的服务。他们的Web Application Accelerator服务通过下列方法优化性能:

向他们的边缘服务器动态映射请求,并监视Internet路由以便在最快和最可靠的路由上传输。

利用压缩技术和预取技术(pre-fetching)以最小化带宽使用率。

用安全套接层(SSL)保护Web传输。

缓存支持的有些硬件标准:

目前缓存支持的硬件标准:

内存不超过4G,超过的只识别4G。

硬盘不超过2T,超过的只识别2T

存储硬盘数量最大支持4块(如果系统盘是电子盘不包含在内)

另外推荐使用INTEL的机器和网卡。

最贵的东西就是免费的。国内所有打着免费旗号的CDN,都是针对小流量,超出后一样需要收费,没打免费旗号的,一样可以免费测试。另外,小流量做CDN效果并不好,因为缓存命中率低。

加速乐、360网站卫士、安全宝的CDN网站加速体验如下:

加速乐

加速乐是我第一款使用的CDN服务,最初用加速乐的原因也很简单就是不需要审核,注册即可用,操作很简单,点两下就可以用了。

后面知道加速乐是与百度站长平台有合作,就更庆幸我的选择是没错的,后来有幸去了趟百度,顺便问了我下加速乐与百度怎么合作的。给我的答复挺让人失望的:合作仅在口头上,没有实质性的动作。

不过后面才知道加速乐属于北京知道创宇公司的,这家公司在网络安全界很有名,而知道创宇(SCANV)与百度的合作很深入,在百度搜索结果的风险提示会采用SCANV的数据库,了然!

看看加速乐都提供那些服务吧:

加速乐、360网站卫士、安全宝的CDN网站加速体验

网页加速是最基础也是站长最看重的功能,加速乐在后台已经给我们提供了节点IP列表,这样的话我们就可以知道那些地区使用了加速乐,也可以做速度测试。

下面在谈谈使用加速乐的感受:

1, 稳定,给我最大的感受,使用半年多没出过问题。

2, 防盗链是个好功能,只是当时我用的时候防盗链的都是它自己的广告,让我很不爽。现在这个功能改成收费服务了,就不清楚了。

3, 像我这样的个人博客没有利用价值,被攻击的情况很少,偶尔有CC攻击、DDOS,一般都能拦截掉。

4, 所谓的SEO优化,实际上就是让蜘蛛抓取源地址上的内容,而不是各个节点上的缓存,这功能实际上对SEO优化仅有一点点帮助,小网站使用根本察觉不到。

5, 加速乐对流量和请求有限制,免费版只有2G/小时、请求50万/小时,原来是3G/小时、请求100次/小时),反而少了。看上去单日48G,其实很容易就耗光了,如果突然爆发流量,加速乐就停止工作,这种情况我经常遇到,导致该用的时候直接停止工作。

安全宝

创新工场下面的项目,李开复也不以市场、宣传见长,导致安全宝在宣传、推广方面处于弱势,似乎我们也很少和安全宝有过什么联系,总给人一种发展缓慢的感觉。

加速乐、360网站卫士、安全宝的CDN网站加速体验

(安全宝免费版与付费套餐情况)

据了解安全宝宣称不限流量,但只缓存500M内容,节点比较多,要求备案,不备案的只有香港节点一个。加入安全宝CDN每次都要审核,而且实际特别长,我也没多少耐心等,也没用过。直接略过。引用了写网友评价:

网友评价:安全宝这个产品主打防黑客攻击、网站入侵等等相关功能,网站加速并不是他们的主打,虽说主打防黑客,但是前两天乌云(Wooyun)爆出安全宝 SQL注入漏洞。而且安全宝回复说企业版没有漏洞,有乌、

网友评价:安全宝对免费网站的限制太多了,30G流量,2个安全节点,2个加速节点,每个节点缓存10MB,而且专业版、高级版的质量也不高。离大中型企业的要求太远,而对于中小网站而言,效果也不好。

网友评价:总体感觉还不错,使用以后,感觉网站比原来快了很多。自己对网站安全一点不懂,有了这个,感觉好多了。

360网站卫士

360网站卫士是我今年启用的CDN服务,我之前还专门写过360网站卫士的体验文章,实话实话,之所以选择360网站卫士还是因为他们的宣传推广太到位了,后者直接联系卢松松本人,毕竟有人直接联系的话以后有问题可以随时知道。事实也是如此,360的客户回应很快,无论是在微博上还是QQ里,都能及时得到客服的回馈。

看看360都提供那些功能吧:

加速乐、360网站卫士、安全宝的CDN网站加速体验

现在360网站卫士主攻方向是各个IDC服务商,西部数码、华夏名网、光环新网等IDC已经被成功拿下,到现在应该覆盖了上百万的网站。

1,解决了个别地区访问慢的问题,济南(山东联通)、长春(东北)两个机房解决了卢松松博客的眉燃之急,在没有使用CDN加速之前,山东和东北的访问都达到了500毫秒以上,甚至超时,现在这些地区访问速度大大提高。当然,现在其他的CDN也可以做到了。

2,不限制流量、请求数,如果网站遇到访问量暴增的时候会大大环境服务器压力。

3,即时刷新缓存,不用等待,在后台点刷新缓存后可以实时看到更新的JS、CSS等文件的效果,像加速乐还要等上几分钟,这如果是修改网页的话非要急死。

4,很多人说百度与360交恶,导致对使用360网站卫士的站收录不好,从我这里的收录情况看是没有这个问题的。

写在最后:

特别提示:通过测速工具测速度参考,真正访问的还是用户,用户说慢那就是慢。ping的速度和实际访问速度有很大差别的。

推荐一款我正在使用的免费云服务器——阿贝云。

在阿贝云上可以申请免费的虚拟主机和免费的云服务器。具体步骤是:

1打开阿贝云网站注册账号

2实名认证(测试期间只要03元就可以)

3开通免费云服务器

如何进行网站的缓存和加速?

随着互联网在人们日常生活中的普及程度越来越高,网站的访问量也越来越大。但是,在高并发的情况下,网站的访问速度会变得越来越慢,给用户带来不好的体验。因此,对于网站所有者而言,如何进行网站的缓存和加速是十分重要的。

一、缓存

缓存是指将经常访问的数据暂时保存在计算机的高速缓存中,以提高数据访问速度的技术。对于网站而言,通过缓存可以减少对数据库的访问,提高网站的响应速度。

在进行网站缓存时,可以使用多种技术,例如浏览器缓存、DNS缓存、服务器缓存、内容分发网络(CDN)等。其中,CDN是最为常用的一种技术,它可以将网站的内容分布到全球各地的服务器当中,让用户可以从离他们最近的服务器中获取页面内容,从而提高网站的访问速度。

二、加速

除了缓存,另一个提高网站访问速度的技术是加速。加速可以通过多种技术实现,如压缩、减少HTTP请求、使用轻量级框架等。下面分别介绍一下这几种技术:

1压缩通过压缩网站的HTML、CSS、JavaScript等文件,可以减小文件的大小,提高传输速度。常用的压缩技术有Gzip、Deflate等。

2减少HTTP请求网站中存在大量的、CSS、JavaScript等文件,每个文件都需要向服务器发送一次HTTP请求,这会减慢网站的访问速度。通过合并和压缩这些文件,可以减少HTTP请求的次数,进而提高网站的访问速度。

3使用轻量级框架在开发网站时,可以选择使用轻量级的框架,如Bootstrap、Foundation等,这些框架不仅可以提高网站的访问速度,还可以提高用户体验。这是因为这些框架都拥有类似的标准化设计,可以让网站看起来更加整洁及易于使用。

综上所述,进行网站缓存和加速可以让网站更快、更稳定、更安全的运行,提高用户体验,解决高并发下的访问缓慢的问题。网站所有者应该注重并跟进相关技术,保证网站在大流量下也能保持良好的访问速度,吸引更多的用户访问。

一、浏览器缓存

浏览器缓存即http缓存;浏览器缓存根据是否需要向服务器重新发起HTTP请求将缓存过程分为两个部分,分别是 强制缓存 和 协商缓存  。

浏览器第一次请求资源的时候服务器会告诉客户端是否应该缓存资源,根据响应报文中HTTP头的缓存标识,决定是否缓存结果,是则将请求结果和缓存标识存入浏览器缓存中。如下图:

1强制缓存 :浏览器会对缓存进行查找,并根据一定的规则确定是否使用缓存。

强制缓存的缓存规则?

HTTP/10 Expires 这个字段是绝对时间,比如2018年6月30日12:30,然后在这个时间点之前的请求都会使用浏览器缓存,除非清除了缓存。

这个字段的缺点就是只会同步客户端的时间,这就有可能修改客户端时间导致缓存失效。

HTTP/11 cache-Control       这个是11的时候替换Expires的,它会有几种取值:

public :所有内容都将被缓存(客户端和代理服务器都可缓存)

private :所有内容只有客户端可以缓存, Cache-Control的默认取值

no-cache :客户端缓存内容,但是是否使用缓存则需要经过协商缓存来验证决定

no-store :所有内容都不会被缓存,即不使用强制缓存,也不使用协商缓存

max-age=xxx (xxx is numeric) :缓存内容将在xxx秒后失效

比如max-age=500,则在500秒内再次请求会直接只用缓存。

优先性:cache-Control > Expires

如果同时存在,cache-Control会覆盖Expires。

这个字段的缺点就是:

如果资源更新的速度是秒以下单位,那么该缓存是不能被使用的,因为它的时间单位最低是秒。

如果文件是通过服务器动态生成的,那么该方法的更新时间永远是生成的时间,尽管文件可能没有变化,所以起不到缓存的作用。

上图中浏览器缓存中存在该资源的缓存结果,并且没有失效,就会直接使用缓存的内容。

上图中浏览器缓存中没有该资源的缓存结果和标识,就会直接向服务器发起HTTP请求。

2协商缓存: 浏览器的强制缓存失效后(时间过期),浏览器携带缓存标识请求服务器,由服务器决定是否使用缓存。

服务器决定的规则?

控制协商缓存的字段有 Last-Modified / If-Modified-Since 和 Etag / If-None-Match。

①Last-Modified 是服务器返回给浏览器的本资源的最后修改时间。

当下次再次请求的时候,浏览器会在请求头中带 If-Modified-Since ,即上次请求下来的 Last-Modified 的值,

然后服务器会用这个值和该资源最后修改的时间比较,如果最后修改时间大于这个值,则会重新请求该资源,返回状态码200。

如果这个值和最后修改时间相等,则会返回304,告诉浏览器继续使用缓存。

② Etag 是服务器返回的一个hash值。

当下次再次请求的时候,浏览器会在请求头中带 If-None-Match ,即上次请求下来的 Etag 值,

然后服务器会用这个值和该资源在服务器的 Etag 值比较,如果一致则会返回304,继续使用缓存;如果不一致,则会重新请求,返回200。

二、服务器缓存

上面是一个简单的流程图:

用户1访问A页面,服务器解析A页面返回给用户1,同时在服务器内存上做一定映射,把A页面缓存在硬盘上面

用户2访问A页面,服务器直接根据内存上的映射找到对应的页面缓存,直接返回给用户2,这样就减少了服务器对同一页面的重复解析

服务器缓存和浏览器缓存的区别:

服务器缓存是把页面缓存到服务器上的硬盘里,而浏览器缓存是把页面缓存到用户自己的电脑里

Nginx服务器 

Nginx是一个高性能的HTTP和反向代理服务器。具有非常多的优越性:

在连接高并发的情况下,Nginx是Apache服务器不错的替代品,Nginx在美国是做虚拟主机生意的老板们经常选择的软件平台之一。

Nginx提供了expires、etag、if-modified-since指令来实现浏览器缓存控制。

nginx -s reload#重新加载配置文件 

nginx -s reopen#重新打开log文件 

nginx -s stop#快速关闭nginx服务 

nginx -s quit #优雅的关闭nginx服务,等待工作进程处理完所有的请求

Nginx设置静态文件的缓存过期时间 

location ~\(js|css|html|png|jpg)$ {

  expires 3d;

}

 expires    3d;  //表示缓存3天

expires    3h;  //表示缓存3小时

expires    max;  //表示缓存10年

expires    -1;  //表示永远过期。

如果设置为-1在js、css等静态文件在没有修改的情况下返回的是http 304,如果修改返回http 200

对于静态资源会自动添加ETag,可以通过添加etag off指令禁止生成ETag。如果是静态文件,那么Last-Modified值为文件的最后修改时间。

在开发调试web的时候,经常会碰到因浏览器缓存(cache)而经常要去清空缓存或者强制刷新来测试的烦恼,提供下apache不缓存配置和nginx不缓存配置的设置。在常用的缓存设置里面有两种方式,都是使用add_header来设置:分别为Cache-Control和Pragma。

location ~ \(css|js|swf|php|htm|html )$ {

  add_header Cache-Control no-store;

  add_header Pragma no-cache;

  }

nginx gzip压缩

使用 gzip 压缩可以降低网站带宽消耗,同时提升访问速度。

主要在nginx服务端将页面进行压缩,然后在浏览器端进行解压和解析,

目前大多数流行的浏览器都迟滞gzip格式的压缩,所以不用担心。

默认情况下,Nginx的gzip压缩是关闭的,同时,Nginx默认只对text/html进行压缩

gzip on;

ersio #开启gzip压缩输出

gzip_http_vn 10 ;#默认11

#其中的gzip_http_version的设置,它的默认值是11,就是说对HTTP/11协议的请求才会进行gzip压缩

#如果我们使用了proxy_pass进行反向代理,那么nginx和后端的upstream server之间是用HTTP/10协议通信的。

gzip_vary on ;

#和http头有关系,加个vary头,给代理服务器用的,有的浏览器支持压缩,有的不支持,

#所以避免浪费不支持的也压缩,所以根据客户端的HTTP头来判断,是否需要压缩

gzip_comp_level 6;

#设置gzip压缩等级,等级越底压缩速度越快文件压缩比越小,反之速度越慢文件压缩比越大 1-9

gzip_proxied any;

#Ngnix作为反向代理的时候启用

#expample:gzip_proxied no-cache;

# off – 关闭所有的代理结果数据压缩

# expired – 启用压缩,如果header中包含”Expires”头信息

# no-cache – 启用压缩,如果header中包含”Cache-Control:no-cache”头信息

# no-store – 启用压缩,如果header中包含”Cache-Control:no-store”头信息

# private – 启用压缩,如果header中包含”Cache-Control:private”头信息

# no_last_modified – 启用压缩,如果header中包含”Last_Modified”头信息

# no_etag – 启用压缩,如果header中包含“ETag”头信息

# auth – 启用压缩,如果header中包含“Authorization”头信息

# any – 无条件压缩所有结果数据

gzip_types text/html ;#压缩的文件类型

#设置需要压缩的MIME类型,非设置值不进行压缩

#param:text/html|application/x-javascript|text/css|application/xml

gzip_buffers 16 8k; #设置gzip申请内存的大小,其作用是按块大小的倍数申请内存空间设置gzip申请内存的大小,其作用是按块大小的倍数申请内存空间

#设置gzip申请内存的大小,其作用是按块大小的倍数申请内存空间

# param1:int 增加的倍数

# param2:int(k) 后面单位是k

# example: gzip_buffers 4 8k;

# Disable gzip for certain browsers

gzip_disable “MSIE [1-6](!SV1)”; #ie6不支持gzip,需要禁用掉ie6

如果所有机器都这样的话还是路由器的问题,网吧一般要用专用的路由器,最好不要让用户打开在线看视频,在线视频很占带宽,一般是做一个视频播放服务器,限制P2P下载速度,保证网页浏览和网游戏的速度就行了,下载东西和看视频都要限速的,不然多大的带宽都不够。路由器要用专业级的,普通带机量小的不推荐使用。路由器要有智能流控功能,就是在流量足够的情况下可以看视频和P2P下载东西,如果流量不足优先保证网页和网流用户。

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » 认识HTTP----缓存篇

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情