一、WEB加速通常有如下方案:
1、基于asp.net技术的页面缓存 基于.net技术的页面缓存,通常有如下两种应用方式: 一、基于数据库触发(设置缓存依赖策略,当数据库中数据发生变化时,触发缓存失效;但微软提供的解决方案目前仅支持SQL Server,如果是ORACLE需要自己实现触发接口)。 二、基于文件依赖的策略(可以设置缓存依赖于文件中的具体键值,当数据更新时,更新文件键值迫使缓存失效)。 优点:实现比较简单 缺点:粒度太粗,对IIS、.net Framework依赖太强,策略还不太完善,跨机器、集群访问方面存在瓶颈。
2、页面静态化 页面静态化有可分为全部静态化、局部静态化、伪静态化等。 优点:页面静态化后,减轻了数据访问的负担,同时由于静态页面不需要复杂处理过程(如ASP.NET页面生命周期),从而提高网站的性能。 缺点:页面静态化增加了维护管理的复杂度,可能同一页面在多个页面之间被引用,需要进行触发级连更新。当大量并发时,更新静态页面会发生LOCK,导致页面访问超时。
--腾讯 Server nginx/0.6.39 Date Wed, 10 Mar 2010 02:26:48 GMT Content-Type text/html; charset=GB2312 Vary Accept-Encoding, Accept-Encoding Expires Wed, 10 Mar 2010 02:41:48 GMT Cache-Control max-age=900 Content-Encoding gzip Age 313 X-Cache HIT from rainny.qq.com Via 1.0 rainny.qq.com:80 (squid/2.6.STABLE5) Connection close
----搜狐 Date Wed, 10 Mar 2010 02:41:40 GMT Server Apache/1.3.39 (Unix) mod_gzip/1.3.26.1a Vary Accept-Encoding,X-Up-Calling-Line-id,X-Source-ID,X-Up-Bearer-Type Cache-Control max-age=70 Expires Wed, 10 Mar 2010 02:42:50 GMT Last-Modified Wed, 10 Mar 2010 02:41:39 GMT Content-Type text/html Age 9 X-Cache HIT from 17376722.22226606.29245568.sohu.com Via 1.0 17376722.22226606.29245568.sohu.com:80 (squid) Connection close
4、其它
二、SQUID简介
SQUID 简单说来是基于UNIX下开发的为WEB应用加速的一个开源软件。SQUID已经普遍在基于nix系统下的WEB应用中使用,例如:新浪、网易都使用该软件,其中SQUID FOR WINDOWS是在WINDOWS下使用。SQUID通过哈希算法在磁盘上建立目录,将第一次请求的信息,存在指定的目录下,供其下次存取,此外SQUID也会将请求的页面信息缓存在内存中,当客户端访问某一页面时,如果内存中存在,则直接命中CACHE;如果内存中不存在,则到CACHE目录下获取,否则到后端的WEB SERVER获取。
SQUID 特点:
1、SQUID沿继了nix下配置的风格,可能用惯了WINDOWS的用户初次使用会有些不适。 2、SQUID包括了一系列的配置策略,认证、访问控制、缓存设置、URL抓取、日志管理、磁盘管理、群集等。 3、SQUID可以通过refresh_pattern策略设置请求的URL可缓存的内容,失效时间(详见文档)。
4、缓存策略说明
SQUID使用了LM算法,LM就是页面Header里时间(Date)和Last-Modified时间的差。Date一般是Squid从后面取页面的时间,Last-Modified 一般是页面生成时间。
refresh_pattern 的语法是
refresh_pattern [-i] regexp min percent max [options]
min, max的单位是分钟,percent就是百分比。
refresh_pattern 的算法如下:(当前时间定义为CURRENT_DATE)
1) If ((CURRENT_DATE-DATE(就是LM里定义的时间)) < min),cache是新鲜的
2) else if ((CURRENT_DATE-DATE) < (min + (max-min)*percent),cache是新鲜的
3) else cache是过期的
cache过期就需要从后面server取新鲜内容。
常用的几个参数的意思
override-expire
该选项导致squid在检查Expires头部之前,先检查min值。这样,一个非零的min时间让squid返回一个未确认的cache命中,即使该响应准备过期。
override-lastmod
改选项导致squid在检查LM-factor百分比之前先检查min值。
reload-into-ims
该选项让squid在确认请求里,以no-cache指令传送一个请求。换句话说,squid在转发请求之前,对该请求增加一个If-Modified- Since头部。注意这点仅仅在目标有Last-Modified时间戳时才能工作。外面进来的请求保留no-cache指令,以便它到达原始服务器。
一般情况可以使用 reload-into-ims。它其实是强行控制对象的超时时间,这违反了http协议的精神,但是在带宽较窄的场合,可以提高明显系统相应时间。
关于SQUID FOR WINDOWS介绍已经很多,本文就不在赘述,详见SQUID权威手册这本书。
在使用SQUID之前,首先要规划或确定你现有布署环境,如果你是Single Web Server 建议你在Web Server前增加一台机器做为SQUID服务器
三、SQUID FOR WINDOWS配置
本文中SQUID放在172.20.65.201的机器上,应用WEB SERVER IP为172.20.65.203,其中SQUID在201上的80端口侦听,测试客户端机器为172.20.65.231,在squid.conf中#代表注释,所以开启某项设置,需去掉前面的#。TAG标签代表每一功能项的设置。
1、下载 下载SQUID FOR WINDOWS(我所用的版本是Squid 2.7.STABLE6,各个版本的配置可能略有不同,大家请注意)