网站静态化方案
2010-12-20 23:09
155 查看
背景:一般来说网站性能最大的瓶颈来自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进一下提速
目的:打造一个不限开发语言的静态化技术,实现一定的通用性。
实施步骤:
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进一下提速
相关文章推荐
- 网站页面静态化方案
- 网站架构(页面静态化,图片服务器分离,负载均衡)方案全解析
- 网站页面静态化方案
- 网站架构(页面静态化,图片服务器分离,负载均衡)方案全解析
- velocity基础教程--4通过velocity生成文件--网站静态化实现方案
- 网站静态化方案(一)静态化原理
- 关于大型网站技术演进的思考(十)--网站静态化处理—动静整合方案(2)
- 网站静态化方案
- 网站架构(页面静态化,图片服务器分离,负载均衡)方案全解析
- 关于大型网站技术演进的思考(十)网站静态化处理―动静整合方案(2)
- 网站架构(页面静态化,图片服务器分离,负载均衡)方案全解析
- 网站架构(页面静态化,图片服务器分离,负载均衡)方案全解析
- 网站架构(页面静态化,图片服务器分离,负载均衡)方案全解析
- 关于大型网站技术演进的思考(十)--网站静态化处理—动静整合方案(2)
- velocity基础教程--4通过velocity生成文件--网站静态化实现方案
- 网站架构(页面静态化,图片服务器分离,负载均衡)方案全解析
- 网站架构(页面静态化,图片服务器分离,负载均衡)方案全解析
- 网站架构(页面静态化,图片服务器分离,负载均衡)方案全解析
- 网站架构(页面静态化,图片服务器分离,负载均衡)方案全解析
- 网站架构(页面静态化,图片服务器分离,负载均衡)方案全解析