- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Web;
- using System.Net;
- using System.IO;
- using System.Text;
- using System.Web.UI.HtmlControls;
- using System.Text.RegularExpressions;
-
-
-
-
- public class CreateHtml:System.Web.UI.Page
- {
- public CreateHtml()
- {
-
-
-
- }
-
-
-
-
-
- public bool Nei_Create(string strURL, string strRelPath)
- {
- string strFilePage;
-
- strFilePage = HttpContext.Current.Server.MapPath(strRelPath);
- StreamWriter sw = null;
-
- try
- {
-
- if (File.Exists(strFilePage))
- {
- File.Delete(strFilePage);
- }
- sw = new StreamWriter(strFilePage, false, System.Text.Encoding.GetEncoding("gb2312"));
- System.Net.WebRequest wReq = System.Net.WebRequest.Create(strURL);
- System.Net.WebResponse wResp = wReq.GetResponse();
- System.IO.Stream respStream = wResp.GetResponseStream();
- System.IO.StreamReader reader = new System.IO.StreamReader(respStream, System.Text.Encoding.GetEncoding("gb2312"));
- string strTemp = reader.ReadToEnd();
-
- Regex r1 = new Regex("<input type=\"hidden\" name=\"__EVENTTARGET\".*/>", RegexOptions.IgnoreCase);
- Regex r2 = new Regex("<input type=\"hidden\" name=\"__EVENTARGUMENT\".*/>", RegexOptions.IgnoreCase);
- Regex r3 = new Regex("<input type=\"hidden\" name=\"__VIEWSTATE\".*/>", RegexOptions.IgnoreCase);
-
- Regex r4 = new Regex("<form .*id=\"form1\">", RegexOptions.IgnoreCase);
- Regex r5 = new Regex("</form>");
-
- Regex r6 = new Regex("<input type=\"hidden\" name=\"__EVENTVALIDATION\".*/>", RegexOptions.IgnoreCase);
- strTemp = r1.Replace(strTemp, "");
- strTemp = r2.Replace(strTemp, "");
- strTemp = r3.Replace(strTemp, "");
- strTemp = r4.Replace(strTemp, "");
- strTemp = r5.Replace(strTemp, "");
- strTemp = r6.Replace(strTemp, "");
-
- sw.Write(strTemp);
- }
- catch (Exception ex)
- {
- HttpContext.Current.Response.Write(ex.Message);
- HttpContext.Current.Response.End();
- return false;
- }
- finally
- {
- sw.Flush();
- sw.Close();
- sw = null;
- }
-
- return true;
- }
-
-
-
-
-
- public bool Wai_Create(string strURL, string strRelPath,string filename)
- {
- string strFilePage;
- strFilePage = strRelPath + "\\" + filename;
- StreamWriter sw = null;
-
- try
- {
- if (!Directory.Exists(strRelPath))
- {
- Directory.CreateDirectory(strRelPath);
- }
- if (File.Exists(strFilePage))
- {
- File.Delete(strFilePage);
- }
- sw = new StreamWriter(strFilePage, false, System.Text.Encoding.GetEncoding("gb2312"));
- System.Net.WebRequest wReq = System.Net.WebRequest.Create(strURL);
- System.Net.WebResponse wResp = wReq.GetResponse();
- System.IO.Stream respStream = wResp.GetResponseStream();
- System.IO.StreamReader reader = new System.IO.StreamReader(respStream, System.Text.Encoding.GetEncoding("gb2312"));
- string strTemp = reader.ReadToEnd();
-
- Regex r1 = new Regex("<input type=\"hidden\" name=\"__EVENTTARGET\".*/>", RegexOptions.IgnoreCase);
- Regex r2 = new Regex("<input type=\"hidden\" name=\"__EVENTARGUMENT\".*/>", RegexOptions.IgnoreCase);
- Regex r3 = new Regex("<input type=\"hidden\" name=\"__VIEWSTATE\".*/>", RegexOptions.IgnoreCase);
-
- Regex r4 = new Regex("<form .*id=\"form1\">", RegexOptions.IgnoreCase);
- Regex r5 = new Regex("</form>");
-
- Regex r6 = new Regex("<input type=\"hidden\" name=\"__EVENTVALIDATION\".*/>", RegexOptions.IgnoreCase);
- strTemp = r1.Replace(strTemp, "");
- strTemp = r2.Replace(strTemp, "");
- strTemp = r3.Replace(strTemp, "");
- strTemp = r4.Replace(strTemp, "");
- strTemp = r5.Replace(strTemp, "");
- strTemp = r6.Replace(strTemp, "");
-
- sw.Write(strTemp);
- }
- catch (Exception ex)
- {
- HttpContext.Current.Response.Write(ex.Message);
- HttpContext.Current.Response.End();
- return false;
- }
- finally
- {
- sw.Flush();
- sw.Close();
- sw = null;
- }
-
- return true;
-
- }
- public void FilePicDelete(string path)
- {
- System.IO.FileInfo file = new System.IO.FileInfo(path);
- if (file.Exists)
- file.Delete();
- }
- }
-
-
- 用法:
- new CreateHtml().Nei_Create("http://localhost:4032/new5mdn/default.aspx", "default.htm");
-
-
-
-
最近學院網(wǎng)站要改版,于是有了這個想法,將首頁生成靜態(tài)文件,以提高訪問速度。初步想法如下(只適應(yīng)于首頁靜態(tài)文件生成): IIS中設(shè)置默認文檔順序為index.html,default.aspx 然后重寫default.aspx的render方法: protected override void Render(HtmlTextWriter writer) { //這是默認的Render實現(xiàn),直接輸出到writer中 //base.Render(writer); StringWriter html = new StringWriter(); HtmlTextWriter tw = new HtmlTextWriter(html); //通過base.Render()方法,把生成的HTML寫入到我們定義的tw中 base.Render(tw); string path = Server.MapPath("index.html"); StreamWriter sw = new StreamWriter(path, false, System.Text.Encoding.Default); //寫入到文件中 sw.Write(html.ToString()); sw.Close(); //寫入到writer中,以輸出頁面的HTML //注意,這里不能再調(diào)用base.Render(writer),會出現(xiàn)錯誤 writer.Write(html.ToString()); }
這樣在每次訪問default.aspx的時候會在同目錄下生成index.html文件,而一般用戶訪問時都會直接輸入域名,如http://domain.com 這樣由于iis中的設(shè)置,用戶默認訪問到的都是index.html靜態(tài)頁面,應(yīng)該能有效提高首頁打開速度。因為首頁更新不會太快,添加了新聞或其它在首頁顯示的內(nèi)容的時候可以手動訪問一下http://domain.com/default.aspx 這個頁來重新生成index.html,或者在發(fā)布新聞后自動訪問一下default.aspx頁,這樣就能做到index.html頁內(nèi)容及時更新,這種方法應(yīng)該比outputcache更好,問題也會少。當然前提是首頁沒有各種postback事件,有登錄框倒好辦,直接把登錄框改為常規(guī)的hmtl form,用post的方式post到登錄頁。 |