黑马程序员技术交流社区
标题:
这两天在做一个网站,有个问题
[打印本页]
作者:
鲍云龙
时间:
2012-6-22 08:30
标题:
这两天在做一个网站,有个问题
请问一下,页面静态化怎么实现,具体思路是什么 谢谢
作者:
张恒维
时间:
2012-6-22 09:32
{:soso_e128:}简单一点吧.用传统的办法,动态组装html字符串代码,然后保存在磁盘上.实在要说的很具体的话占得篇幅就大了.给个链接让你琢磨一下呗.
http://www.cnblogs.com/mysweet/archive/2012/05/26/2519686.html
作者:
程艳伟
时间:
2012-7-2 11:33
呵呵,不知道你说的是伪静态还是真正的静态化,好,如果你说的是真正的静态化,来吧,看我的博客园http://www.cnblogs.com/weiwin/
作者:
xiaozehope
时间:
2012-7-2 13:48
伪静态我之前有试过,就是在<httpHandlers>这一次加入filter,然后根据自己的需要把 .aspx?id=1 转为 1.html
<httpHandlers>
<add verb="*" path="*/show-?*-?*.html" type="UrlRewriter.urlRewriter"/>
<!--<add verb="*" path="*/html/*.html" type="UrlRewriter.urlRewriter" />-->
<!--<add path="*.*" verb="*" type="FilterDomainName.FilterDomainName" validate="true"/>-->
<!--<add path="index.html" verb="*" type="UrlRewriter.urlRewriter" validate="true"/>-->
<!--<add path="*.html" verb="*" type="System.Web.UI.PageHandlerFactory" validate="true"/>-->
</httpHandlers>
namespace UrlRewriter
{
public class urlRewriter : IHttpHandler //实现“IHttpHandler”接口
{
public urlRewriter()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
public void ProcessRequest(HttpContext Context)
{
try
{
//取得原始URL屏蔽掉参数
string Url =Context.Request.RawUrl;
//建立正则表达式
Regex reg = new Regex(@"/show-(\d+)-(\d+)\..+",RegexOptions.IgnoreCase);
//用正则表达式进行匹配
Match m = reg.Match(Url,Url.LastIndexOf("/"));//从最后一个“/”开始匹配
if(m.Success){//匹配成功
string realPath =string.Format(@"/aspx/show.aspx?type={0}&id={1}",m.Groups[1],m.Groups[2]);
//Context.Response.Write(RealPath);
//Context.RewritePath(RealPath);//(RewritePath 用在无 Cookie 会话状态中。)
//realPath = "/urlRewriter"+realPath;
Context.Server.Execute(realPath);
}
reg = new Regex(@"/showitem-(\d+)\..+",RegexOptions.IgnoreCase);
m = reg.Match(Url,Url.LastIndexOf("/"));
if (m.Success)
{//匹配成功
string realPath = string.Format(@"/aspx/show.aspx?type={0}", m.Groups[1]);
//Context.Response.Write(RealPath);
//Context.RewritePath(RealPath);//(RewritePath 用在无 Cookie 会话状态中。)
//realPath = "/urlRewriter"+realPath;
Context.Server.Execute(realPath);
}
//else{
// Context.Response.Redirect(Context.Request.Url.ToString());
//}
}
catch
{
Context.Response.Redirect(Context.Request.Url.ToString());
}
}
/// <summary>
/// 实现“IHttpHandler”接口所必须的成员
/// </summary>
/// <value></value>
public bool IsReusable
{
get { return false; }
}
}
}
这里要注意的是iis的扩展映射问题,注意要配置下
作者:
许庭洲
时间:
2012-7-2 16:54
1,静态分两种,真静态和伪静态;
2,真静态就是动态网站页面生成一个静态副本页面;
3,伪静态就是将动态网站页面带参数的地址直接通过在服务器装的伪静态组件和伪静态改写规则重写成静态网页的地址;
4,静态页实现与数据操作分离.也就是说静态页的模块不要与数据操作耦合太高.这样便于以后扩展;
5,至于模板引擎建议用nvelocity实现;
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2