将动态页面转成静态页面
来源:互联网 发布:steam壁纸软件 编辑:程序博客网 时间:2024/06/07 12:23
在App_Code文件下新建两个类:
static_htm类用来处理将动态页面转化成静态页面。
如下:
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.IO;
/// <summary>
/// static_htm 的摘要说明
/// </summary>
public class static_htm : System.Web.UI.Page {
public static_htm()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
protected override void Render(HtmlTextWriter writer)
{
StringWriter sw = new StringWriter();
HtmlTextWriter htmlw = new HtmlTextWriter(sw);
//调用Render方法,把页面内容输出到StringWriter中
base.Render(htmlw);
htmlw.Flush();
htmlw.Close();
//获得页面内容
string pageContent = sw.ToString();
string path = Server.MapPath("~/CacheFile/");
if (!Directory.Exists(path))
{
Directory.CreateDirectory(path);
}
string pageUrl = StaticFileCacheModule.GetFileName(HttpContext.Current);
if (!File.Exists(pageUrl))
{
//把页面内容保存到静态文件中
using (StreamWriter stringWriter = File.CreateText(path + pageUrl))
{
stringWriter.Write(pageContent);
}
}
//将页面内容输出到浏览器
Response.Write(pageContent);
}
}
StaticFileCacheModule类用来处理哪些动态页面需要转化成静态页面的,
如下:
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.IO;
/// <summary>
/// StaticFileCacheModule 的摘要说明
/// </summary>
public class StaticFileCacheModule : IHttpModule
{
public StaticFileCacheModule()
{
//
// TODO: 在此处添加构造函数逻辑
//
Console.WriteLine();
}
public void Dispose()
{
}
public void Init(HttpApplication context)
{
context.BeginRequest += new EventHandler(context_BeginRequest);
}
private void context_BeginRequest(object sender, EventArgs e)
{
HttpContext context = ((HttpApplication)sender).Context;
//判断是否需要处理
if (context.Request.AppRelativeCurrentExecutionFilePath.ToLower().EndsWith(".aspx"))
{
string fileUrl = "~/CacheFile/";
string fileName = GetFileName(context);
string filePath = context.Server.MapPath(fileUrl) + fileName;
if (File.Exists(filePath))
{
//如果静态缓存文件存在,直接返回缓存文件
context.RewritePath(fileUrl + fileName, false);
}
}
}
public static string GetFileName(HttpContext context)
{
//我们的缓存文件名由页面文件名加上查询字符串组成
return context.Request.AppRelativeCurrentExecutionFilePath.ToLower()
.Replace(".aspx", "").Replace("~/", "").Split('/')[context.Request.AppRelativeCurrentExecutionFilePath.ToLower()
.Replace(".aspx", "").Replace("~/", "").Split('/').Length - 1]
+ context.Request.Url.Query.Replace("?", "__").Replace("&", "_") + ".html";
}
}
配置Web.Config文件,如下:
<httpModules>
<add name="StaticFileCache" type="StaticFileCacheModule"/>
</httpModules>
最后:
希望要转成静态页面的动态页面继承static_htm:
如:
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
public partial class _Default : static_htm
{
protected void Page_Load(object sender, EventArgs e)
{
}
}
- 将动态页面转成静态页面
- asp.net如何将动态页面转成静态页面
- 动态页面转成伪静态页面URL REWRITE(摘)
- ASP之由动态页面转成静态文件
- 将jsp动态页面静态化
- Filter 将动态页面化为静态
- 将所有的.jsp动态页面变成.html静态页面
- 静态页面(动态页面)引入静态页面(动态页面)
- 静态页面和动态页面
- 静态页面和动态页面
- 静态页面与动态页面
- 动态页面静态化
- 动态页面静态化
- 动态页面静态化
- 动态页面静态化
- 动态页面静态化
- 动态页面静态化、、
- 动态页面静态化
- 验证文本框转化为金额,小数点后只能输入两位数字
- ESB服务总线-mule简介
- 基于比较的排序,时间复杂度下界是o(nlogn)的小证明
- 用QtContact 实现MeeGo通讯录(二)
- ArcScene和ArcGlobe的功能比较
- 将动态页面转成静态页面
- 为什么怕写文章
- Flex ViewStack高度异常问题
- Specification of OLE for Process Control
- fortune random server demo
- tomcat server.xml配置详解
- layoutinflater 与 findviewbyid区别
- fedora下安装MP3,视频解码器提示 No package,,,,,,,,,,,available解决办法
- VC常见编译错误