网站主要栏目静态化规范及原理
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
栏目页面静态化规范
一、前言:
为了减轻网站服务器的负载,加快客户端访问的速度,加强对搜索引擎的优化,特别设计一个静态页生成规范。
二、优点:
1、网站加载速度非常快。
2、不需要占用多大的服务器资源。
3、不需要设计网页模板。
三、缺点:
1、不能实时更新网站内容,只能按照一定的时间[每隔几分钟或者每隔几小时进行更新首页]。
2、维护麻烦
四、实现原理:
1、通过在basePage重载OnInit方法(判断aspx对应的静态页面是否存在,来决定是生成还是重定向)
2、Render方法(到这里了可以确定页面是不存在的,所以把要生成的内容流存到静态页面中去,而不是直接render到客户浏览器,最后重定向)
3、在内容没有更新时,页面请求都会被OnInit重定向到静态页面(也可以确定是最新内容)。
4、当有内容更新的同时,删除内容相关的所有静态页面(可动态配置),达到更新静态页面的目的。
5、页面加载优先顺序:1>OnInit 2>Page_OnLoad 3>render 4> Page_OnUnLoad
六、实现案例
<%@ Page Language="C#" AutoEventWireup="true" %>
"/TR/xhtml1/DTD/xhtml1-transitional.dtd">
// 计算数据,完全可以从数据看取得
ICollection CreateDataSource( )
{
System.Data.DataTable dt = new System.Data.DataTable();
System.Data.DataRow dr;
dt.Columns.Add(new System.Data.DataColumn("学生班级", typeof(System.String)));
dt.Columns.Add(new System.Data.DataColumn("学生姓名", typeof(System.String)));
dt.Columns.Add(new System.Data.DataColumn("语文", typeof(System.Decimal)));
dt.Columns.Add(new System.Data.DataColumn("数学", typeof(System.Decimal)));
dt.Columns.Add(new System.Data.DataColumn("英语", typeof(System.Decimal)));
dt.Columns.Add(new System.Data.DataColumn("计算机", typeof(System.Decimal)));
for (int i = 0 ; i < 50 ; i++)
{
System.Random rd = new System.Random(Environment.TickCount * i); ;
dr = dt.NewRow();
dr[0] = "班级" + i.ToString();
dr[1] = "【田螺】" + i.ToString();
dr[2] = System.Math.Round(rd.NextDouble() * 100, 2);
dr[3] = System.Math.Round(rd.NextDouble() * 100, 2);
dr[4] = System.Math.Round(rd.NextDouble() * 100, 2);
dr[5] = System.Math.Round(rd.NextDouble() * 100, 2);
dt.Rows.Add(dr);
}
System.Data.DataV iew dv = new System.Data.DataV iew(dt);
return dv;
}
///
/// 页面初始化
///
///
protected override void OnInit(EventArgs e)
{
string fileName = "index.html";
base.FileName = fileName;
//1.检查文件是否存在
if (System.IO.File.Exists(Server.MapPath(fileName)))
{
//1\每间隔一段时间就生成静态页
if
(pareTo(System.IO.File.GetLastWriteTime(Server.MapPath(fileName)).AddS econds(int.Parse(WebConfigurationManager.AppSettings["CreateHtmlTime"]))) >= 0)
{
//1>.初使化页面
base.OnInit(e);
}
else
{
//2>.跳转页面
Response.Redirect(fileName,true);
}