A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 鲍云龙 中级黑马   /  2012-6-22 08:30  /  2277 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

请问一下,页面静态化怎么实现,具体思路是什么 谢谢

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

4 个回复

正序浏览
1,静态分两种,真静态和伪静态;
2,真静态就是动态网站页面生成一个静态副本页面;
3,伪静态就是将动态网站页面带参数的地址直接通过在服务器装的伪静态组件和伪静态改写规则重写成静态网页的地址;
4,静态页实现与数据操作分离.也就是说静态页的模块不要与数据操作耦合太高.这样便于以后扩展;
5,至于模板引擎建议用nvelocity实现;

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
伪静态我之前有试过,就是在<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的扩展映射问题,注意要配置下

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
呵呵,不知道你说的是伪静态还是真正的静态化,好,如果你说的是真正的静态化,来吧,看我的博客园http://www.cnblogs.com/weiwin/
回复 使用道具 举报
{:soso_e128:}简单一点吧.用传统的办法,动态组装html字符串代码,然后保存在磁盘上.实在要说的很具体的话占得篇幅就大了.给个链接让你琢磨一下呗.

http://www.cnblogs.com/mysweet/archive/2012/05/26/2519686.html

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马