首页 > 专家说

各位高手,谁知道.net怎么做到动态页面静态化,请给出具体实用的方法。谢谢

来源:新能源网
时间:2024-08-17 14:57:56
热度:

各位高手,谁知道.net怎么做到动态页面静态化,请给出具体实用的方法。谢谢热心网友:http://www.cnblogs.com/suyuan/articles/1134315.h

热心网友:http://www.cnblogs.com/suyuan/articles/1134315.html去这里看看,里面很详细(含图)以下是摘要:服务器压力过大?一个有效的办法是将内容静态化.静态页面的访问速度比起动态页面那是绝对的优势.目前网站静态化的方案(不谈技术)根据总结主要有三种:实时的静态化,即增删改后立即生成对应的静态文件定时静态化或者手工静态化,即增删改后有程序控制在预定的时间内进行一次静态化批量生成,或者手工批量生成以上两种方法是大部分网站都经常使用的方法,但是他们有一个共同的缺点就是,生成了大量的不受关注的页面,占用服务器磁盘空间.那么有什么好的方法来解决上面的问题么?答案是肯定的看看下面这个流程图(画的不好,多包涵)充分利用了服务器404错误页面可以自己指定的优势,来完成首次访问的静态化.结合数据库,减少IO的操作次数,保证所生成的页面绝对是用户访问过的页面,甚至可以对以下的方案进行扩充,根据页面的受关注程度,定期可以删除一些受关注程度较低的页面,进而节约磁盘空间,特别是购买别人空间的朋友尤其有用!我根据以上的思想做了一个简单的demo使用的是aspx在webconfig中配置 如下:(也可以通过IIS)<customErrors mode="On" defaultRedirect="Loginc.aspx">Loginc的代码如下: protected void Page_Load(object sender, EventArgs e) { string url = SyRequest.GetQueryString("aspxerrorpath"); url = url.Substring(1, url.LastIndexOf(".")-1); if (url.IndexOf("_") > -1) { string page = url.Split('_')[0]; int toid =Utils.StrToInt(url.Split('_')[1],-1); switch (page) { case "hospital": Response.Redirect("hospital.aspx?id=" + toid); break; } } }Hospital.aspx页面代码: protected override void Render(HtmlTextWriter writer) { string StaticFileName = "hospital_"+SyRequest.GetQueryInt("id", -1)+".html"; StreamWriter r = new StreamWriter(Server.MapPath(StaticFileName), false, System.Text.Encoding.UTF8); //StaticFileName是html文件名 HtmlTextWriter h = new HtmlTextWriter(r); base.Render(h); r.Close(); h.Close(); Response.Redirect(StaticFileName); }以上就是一个大致的过程,希望大家可以提出不同的见解,mygtalk:suyuan19@gmail.com同时有一个问题就是:当很多人同时访问同一个未生成的页面时,会出现什么情况呢?具体的我还没有测试

###

热心网友:asp.net的运行机制,更倾向于用服务器缓存来解决效率问题。虽然生成静态是最彻底的解决效率问题的方式,但是代价也大,比如列表页分页的问题,新加入的数据搞不好会造成整个几十页的页面需要重新生成,就算再彻底的生成静态方案都无法很好地解决这个问题,生成静态页的代价就是丧失页面的数据关联性。微软也推崇用服务器缓存解决效率这个问题。从我实际的经验上来看,代码中合理的缓存机制对服务器的压力不会比纯静态高多少,对于asp.net程序来说,10人频繁访问与1万人频繁访问对CPU和硬盘的开销没有本质意义上的区别(除非网络带宽不够用),我做.net的项目已经很多了。最大的项目日访问IP达到百万级,PV达到千万级,放心吧,用服务器缓存去解决。这样对维护来说难度也要小很多,每次换模板调整模板只需要改代码就行,不像静态的要全部重新生成,十多万的页面生成都要几个小时。

###

热心网友://生成HTML页 public static bool WriteFile(string strText,string strContent,string strAuthor) { string path = HttpContext.Current.Server.MapPath("/news/"); Encoding code = Encoding.GetEncoding("gb2312"); // 读取模板文件 string temp = HttpContext.Current.Server.MapPath("/news/text.html"); StreamReader sr=null; StreamWriter sw=null; string str=""; try { sr = new StreamReader(temp, code); str = sr.ReadToEnd(); // 读取文件 } catch(Exception exp) { HttpContext.Current.Response.Write(exp.Message); HttpContext.Current.Response.End(); sr.Close(); } string htmlfilename=DateTime.Now.ToString("yyyyMMddHHmmss")+".html"; // 替换内容 // 这时,模板文件已经读入到名称为str的变量中了 str =str.Replace("ShowArticle",strText); //模板页中的ShowArticle str = str.Replace("biaoti",strText); str = str.Replace("content",strContent); str = str.Replace("author",strAuthor); // 写文件 try { sw = new StreamWriter(path + htmlfilename , false, code); //为false时候是覆盖,true为追加sw.Write(str); sw.Flush(); } catch(Exception ex) { HttpContext.Current.Response.Write(ex.Message); HttpContext.Current.Response.End(); } finally { sw.Close(); } return true;

###

热心网友:asp动态页面静态化ISAPI_Rewrite是一个强大的基于正则表达式的URL处理引擎。它非常类似于Apache's mod_Rewrite,它是专为IIS设计的,经过过滤的url更符合友好url规则,更加容易被搜索引擎所接受,是一种SEO优化有力的方法。当然前提你要自己有服务器(配置服务器iis的权限),在此下载:http://www.isapirewrite.com/download/isapi_rwl_0055.msi接着安装,随便装哪都行然后,打开Internet 信息服务,右键,web站点属性,点ISAPI筛选器选项卡.添加筛选器,名称填个isapi_rewrite,路径自己指定ISAPI_Rewrite.dll(在安装的根目录下),然后确定.最后,开始添加rewrite规则.正则,找到ISAPI_Rewrite目录,把httpd.ini的只读属性去掉,打开编辑.下面附上几个通用的配置正则表达式,笔者试用通过:例子:http://music.caiku.com http://flash.caiku.com文件名、参数、参数值均在20位以内一个参数通用表达式:/(.{1,20})/(\D{1,20})/(\d{1,20})\.html /$1\.asp\?$2=$3两个参数通用表达式:/([^/]{1,20})/([^/]{1,20})/([^/]{1,20})/([^/]{1,20})/([^/]{1,20})\.html /$1\.asp\?$2=$3&$3=$4三个参数通用表达式:/([^/]{0,20})/([^/]{0,20})/([^/]{0,20})/([^/]{0,20})/([^/]{0,20})/([^/]{0,20})/([^/]{0,20})\.html /$1\.asp\?$2=$3&$3=$4&$5=$6四个参数通用表达式:/([^/]{0,20})/([^/]{0,20})/([^/]{0,20})/([^/]{0,20})/([^/]{0,20})/([^/]{0,20})/([^/]{0,20})/([^/]{0,20})/([^/]{0,20})\.html /$1\.asp\?$2=$3&$3=$4&$5=$6&$7=$8五个参数通用表达式:/([^/]{0,20})/([^/]{0,20})/([^/]{0,20})/([^/]{0,20})/([^/]{0,20})/([^/]{0,20})/([^/]{0,20})/([^/]{0,20})/([^/]{0,20})/([^/]{0,20})/([^/]{0,20})\.html /$1\.asp\?$2=$3&$3=$4&$5=$6&$7=$8&$9=$10按我的思想就是以asp地址后所带的参数个数进行分类,这样比较通用,其它的当然可以举一反三,自己设计自己的需求该文章转载自德仔工作室:http://www.dezai.cn/article_show.asp?ArticleID=16992

###

热心网友:要实现动态页面静态化,需要服务器支持URL重写功能,即URLRewrite,具体你可以百度一下相关知道。

###

热心网友:不知道你要做成静态的做什么?如果仅仅只是为了降低服务器的消耗,可以设置缓存.缓存的时间自己定,比如10分钟或者5分钟.每次只有第一个人连接你的网站的时候读取数据库,其他人读的就是缓存文件了.当然,过了缓存设定时间还是要重新读取的.这样不是比你生成静态的更好么?再说.ASP页面可以做成静态,ASP.NET的ASPX页面就用缓存

###

热心网友:asp.net可以使用URL重写,网上有这个控件下载,在WEB.CONFIG里配置一下就可以了

###

热心网友:可以用url重写 =========================================== 动态生成Html文件也不挺容易实现的,你可以引用 System.IO.StreamWriter这个命名空间,这是我项目中动态生成html的方法你可以参考一下: /// <summary> /// 生成HTML文件 /// </summary> /// <param name="FilePath">保存文件路径</param> /// <param name="Content">文件流内容</param> /// <param name="FileName">文件名</param> public static void CreateHtmlFile(string FilePath, string Content, string FileName) { if (Directory.Exists(FilePath) == false) { Directory.CreateDirectory(FilePath); } using (StreamWriter m_streamWriter = new StreamWriter(FilePath + "\\" + FileName, false, System.Text.UnicodeEncoding.GetEncoding("UTF-8"))) { m_streamWriter.WriteLine(Content); m_streamWriter.Flush(); m_streamWriter.Close(); } }

  1. 打开页面滚动鼠标会出现波浪式现象,我下载了驱动精灵,可还是不行,这是为什么? 谢谢!
    2024-08-17
  2. 电厂热力系统页面上有个deh控制按钮,里面的允许控机是什么意思
    2024-08-17
  3. 浏览器页面,滑动鼠标滑轮时,页面图像成波浪形滑动,不流畅怎么处理。
    2024-08-17
  4. 浏览页面时页面老是波浪式滚动
    2024-08-17
  5. 电脑显示屏打开网页后会出再波浪式页面是什么回事?该怎么处理?
    2024-08-17
  6. 打开的网页滑动滚动条时页面总是慢慢波浪式的显示怎么回事???
    2024-08-17
  7. 看书时用鼠标换行页面波浪式移动如何处理
    2024-08-17
  8. 我家的电脑浏览网页时 用鼠标滑轮向下滑动 页面跟波浪是的 刷新的向下 很不流畅
    2024-08-17
  9. 我的电脑翻网页时页面总是波浪式流动,是怎么回事
    2024-08-17
  10. 鼠标滚轮滚动页面不是平滑移动而是像波浪一样滚动,怎么办呢?
    2024-08-17
  11. 在拖动页面时,页面波浪式的抖动。是什么原因啊 ?
    2024-08-17
  12. 电脑鼠标上下翻滚页面时 为什么屏幕页面上下成波浪式移动?
    2024-08-17
  13. 我的电脑每次看网页时候拉滚动条页面程波浪式滑动,我知道是显卡没有驱动,怎么解决。
    2024-08-17
  14. IE浏览器在用鼠标滑轮翻页面的时候是波浪形的,怎么才能使其正常翻页啊?需要更改什么设置?请朋友们指点一下,谢谢
    2024-08-17
  15. 下载安装了显卡驱动后,为什么页面还是波浪式滚动?
    2024-08-17