网站静态化方案

来源:互联网 发布:linux ftp 20端口 编辑:程序博客网 时间:2024/05/17 08:25

背景:一般来说网站性能最大的瓶颈来自DB的速度慢,最好的办法就是减少访问DB,这样可以极大地提高网站速度。静态化方案就是为了提高网站速度,优化用户体验,对搜索引擎友好从而提高SEO.

目的:打造一个不限开发语言的静态化技术,实现一定的通用性。

实施步骤:

1.编写一个网页抓取并生成页面的接口

       /// <summary>
       /// 通过传入的Url地址,获取返回的数据
       /// </summary>
       /// <param name="url"></param>
       /// <returns></returns>
       public static string GetStringByUrl(string url, Encoding encoding)
       {
           string strResult = string.Empty;
           Uri u = new Uri(url);

           try
           {
               HttpWebRequest request = (HttpWebRequest)WebRequest.Create(u);
               HttpWebResponse response = (HttpWebResponse)request.GetResponse();
               Stream streamReceive = response.GetResponseStream();
               StreamReader streamReader = new StreamReader(streamReceive, encoding);
               strResult = streamReader.ReadToEnd();
           }
           catch
           {

               return "error";
           }

           return strResult;

       }

//调用的例子

           string str = Utils.GetStringByUrl(sourceUrl, System.Text.Encoding.UTF8);

           using (StreamWriter sw = new StreamWriter(destFile))
           {
               sw.Write(str);
           }

2.部署一个网页和一个定时程序(调用网页抓取并生成页面的接口)

网页(CreatePage.aspx):传入需要生成的动态页面的URL,以及生成页面的存放位置

定时程序:根据config.xml上的配置,定时生成文件。

配置文件(config.xml): 配置动态页面的URL,和参数规则,以及生成页面的频率,生成页面存放的位置。

例如:http://www.bincl.com/index.php?product-{$1}.html,  $1从1-500  D:/www.bincl.com/page/

3.更新方法

   1. 网站信息更新了,如果你能在的网站更新程序里面调用网页(CreatePage.aspx),传入相应的参数,重新生成静态页面就最好,有时程序不是你写的,或者引用第三方的不方便改写的,这种方法就不可实现,可以采用下面方法

   2. 配置好定时程序的规则,不频繁页面的可以定在0点到6点访问人数最少的时候生成,一天生成一次,或者一天生成几次,看具体业务定。有些页面很频繁,比较评论等用户交互的信息,可能就需要配置成2分钟更新一次.

www.bincl.com的实施过程:

1. 先实现伪静态,实现伪静态的工具比较多,在iis平台下有ISAPI_Rewrite3, 或rewrite等,配置httpd.conf相应的规则就行。

例如:

RewriteRule ^(.*)$ index.php?$1 [L]

RewriteRule /r/i([0-9]+)/.html$  /index/.aspx/?refuserid=$1
RewriteRule /r/i([0-9]+)-(.+)/.html$  /index/.aspx/?refuserid=$1&union=$2

2. 在实现伪静态后,配置定时程序生成页面,主页为5分钟更新一次,商品页面是24个小时更新一次,等等

3. 当需要全量更新的时候,直接重启定时程序就实现全量更新。

效果:通过监控宝的测速报告可以得出以下结果

未静态化的主页:平均速度为2000ms

静态化后的主页:平均速度为600ms,大概提升了3倍速度

总结:实现静态化是一个过程,需要解决的问题也是不少的,比较说登录态的显示,通过程序生成的页面是没有登录状态的,这需要改造页面,通过javascript读取cookie来显示登录状态,或者通过ajax请求动态页来返回是否已经登录,通过javascript控制登录状态的显示。

生成的静态页面如果没有内容更新,也可以比较内容是否没有变化来决定要不要再生成,减少生成可以提高页面的cache进一下提速

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/netbug2009/archive/2010/12/20/6087960.aspx

原创粉丝点击