違法網站請勿向我司工作人員發起任何形式的人工服務請求,嚴禁利用鴻茂傳媒技術支持服務與產品從事任何非法活動,如有發現不再提供任何技術支持。×

asp.net偽靜態的實現及偽靜態的意義

一、偽靜態的用處

有些用戶覺得,偽靜態和真靜態實際被收錄量會相差很大,其實不然,從你個人角度,你去判斷一下一個帖子到底是真靜態還是偽靜態?估計很難看得出,因為所謂靜態的意思,就是地址中不帶問號,不帶問號的就是靜態,管他是真的還是偽的?搜尋引擎看得出嗎?所以說,其實不論是真的還是偽的,其實對於搜尋引擎來說都是一樣的,搜尋引擎沒有說,你這個是偽的,我不收錄你。

追根究底來說,為什麼搜尋引擎會不收錄帶問號的網址?因為搜尋引擎怕由於問號而進入死循環,稱為"搜索機器人陷阱(spidertraps)"(以前動網就有這樣一個漏洞,蜘蛛進去出不來了),所以很多時候帶問號的地址搜尋引擎是不會進去的,偽靜態對於搜尋引擎來說,其實就是靜態,因為地址中沒有帶問號,所以沒有真靜態比偽靜態收錄得多的說法。

  二、為什麼選擇偽靜態?

有很多用戶說:真靜態不好嗎?為什麼不用真靜態?訪問起來不是更快嗎?負載不是更好嗎?等等等等…& hellip;

在這裡,其實只用一個問題來回答:為什麼選擇mysql?很多用戶大概不明白為什麼那麼多大型論壇都選擇了mysql資料庫作為儲存機制,大概大部分都是想:"因為dz用了mysql,所以就是mysql".

其實不然,試想dz為什麼會在那麼多論壇程式並存的日子生存下來並笑傲江湖,很大原因是因為dz用了mysql.試想如果大c當年改的程式是一個文本論壇,那還會有dz的今天嗎?或者從另一個角度問,為什麼那麼多大型網站都選擇了mysql而不是文本作為儲存機制?

所謂文本論壇,實際就跟真靜態的說法差不多了,將數據儲存在空間上面,大量讀寫硬碟,等等…& hellip;

為什麼這種寫法會被淘汰呢?我相信答案不會是老師所說的:"discuz!目前有 2129867 篇帖子,存儲成html的話大約是 20799m,也就是 20g左右。這當中還不計算由於磁碟存儲機製造成的空間浪費(100個 1k的文件占用的空間可能會是200k)。& quot;

這種說法從我個人觀點來看,這個理由不能給用戶不使用真靜態充分的理由。然而,另一個理由卻是值得我們注意思考的,也是為什麼絕大多數站都不選擇生成靜態:

"刪除、更新這些html內容會導致大量的磁碟io操作以及大量的磁碟碎片。& quot;

正如上面的說法,在實際當中確實會導致大量的磁碟i/o操作(input/output),大量進行i/o操作帶來的後果可想而知,會產生大量的磁碟碎片甚至會導致硬碟出現壞道。

所以對於生成靜態而言,還不如去用文本論壇,可以更好的解決你們的需求。(副w就是做文本論壇出生的,當時的名字為ofstar,後因發展困難轉為mysql,而pw生成靜態頁面也就是pw以前文本方式稍加改進用於吸引用戶眼球的噘頭)

當然,如果大家記憶力好的話,應該可以記得pw4的時候pw論壇不能訪問很長一段時間,後來恢復到一段時間前的數據,官方的說法是被人攻擊而導致硬碟損壞,其實這種說法是比較不可信的,相對於是被攻擊導致硬碟損壞還是大量i/o操作而產生的後果,我個人更傾向於後者。

當然,如果大家比較關注5d6d的話,應該知道前幾天有一天時間5d6d無法訪問,根據非官方消息是因為硬碟壞了,而損壞的原因我想當然是因為大量用戶大量進行i/o操作了,試想,我們一個論壇,進行磁碟i/o操作的僅為管理員進行更新緩存時進行的,而5d6d每一個會員就是一個管理員,試想下對磁碟是多大的考驗?所以我並不奇怪5d6d的硬碟壞了。

當然,也許在讀這篇文章的很多朋友都有使用過bt,也聽說過bt對硬碟很傷,不能開多,而所謂傷害,和這裡指的都是同一樣東西,大量i/o導致磁碟出現碎片甚至出現磁碟壞道。

這裡都是說些很實際的例子來說明問題了。

  三、偽靜態的壞處

當然猶如一篇文章的作者所說的:"如果流量稍大一些使用偽靜態就出現cpu使用超負荷,我的同時在線300多人就掛了,而不使用偽靜態的時候同時在線超500人都不掛,我的iss數是1000.& quot;

確實是這樣的,由於偽靜態是用正則判斷而不是真實地址,分辨到底顯示哪個頁面的責任也由直接指定轉由cpu來判斷了,所以cpu占有量的上升,確實是偽靜態最大的弊病。

  四、我們應該選擇偽靜態還是真靜態?

我們來總結一下:

1、使用真靜態和假靜態對seo來說沒有什麼區別

2、使用真靜態可能將導致硬碟損壞並將影響論壇性能

3、使用偽靜態將占用一定量的cpu占有率,大量使用將導致cpu超負荷

4、最重要的一點,我們要靜態是為了seo

所以:

1、使用真靜態的方法可以直接排除了,因為無論怎麼生成,對硬碟來說都是很傷的。

2、既然真偽靜態的效果一樣,我們就可以選擇偽靜態了。

3、但是偽靜態大量使用會照成cpu超負荷。

4、所以我們只要不大量使用就可以了。

5、既然靜態只是給seo看的,我們只需要偽靜態給seo就行了,不需要給用戶使用。

6、所以我們只要在專門提供給seo爬的archiver中使用偽靜態就可以了。

7、謝謝大家耐心看我寫的文章。

8、有何不解的地方或是有不同的看法歡迎提出。

  五、關於偽靜態和真靜態的評論

真正的靜態化和偽靜態還是有本質的區別的。為瀏覽用戶處理一個純粹htm和一個調用多個數據的php在cpu的使用率方面明顯前者少。記得原來有個人說html下載硬碟讀寫頻繁,他這麼說好像讀取資料庫不用讀寫磁碟似的,何況還有一大堆緩存的零散php也是放在硬碟的,這些讀取不用磁碟操作麼?可笑。

讀取單個htm+圖片flash等附件就可以實現的目的,何苦要讀資料庫又要讀php緩存文件又要重新整合數據輸出再+圖片flash等附件這麼大費周章呢?cms首頁不需要很多的互動的,論壇那一套不應該拿到這裡來用,相反應該更多考慮的是:美觀!兼容!信息的直觀!性能!還有穩定!

其實所謂的偽靜態頁面,就是指的url重寫,在asp.net中實現非常簡單

首先你要在你的項目里引用兩個dll:

actionlessform.dll

urlrewriter.dll

真正實現重寫的是 urlrewriter.dll 但是如果你要實現分頁,那麼必須使用這個actionlessform .dll

首先在web.config里寫

  ~/products/jurisdiction_(w{3})。aspx

  ~/en/jurisdiction.aspx? jurid=$1

  ~/articles/(d{1,})。aspx

  ~/articles/(d{1,})_(d{1,})。aspx

這樣比如上面的網址http://localhost/en/article_view.aspx? article_id=9就可以用http://localhost/articles/9.aspx來代替,當然,你代替後的擴展名可以用任何iis能解釋的擴展名,如果你喜歡用htm做擴展名,那麼在配置轉發規則上面配置為htm為擴展名的,同樣有些文章可能很長,往往我們會把一個文章分成幾頁,那麼根據上面的配置,我們如果想訪問http://localhost/en/article_view.aspx? article_id=9& page=3我們就可以用http://localhost/articles/9_3.aspx來代替,這樣當搜尋引擎來抓起你的網頁的時候,就會收錄你這些網址下去,別人搜索到你網頁的時候,就可以從這些地址連結過來。

然後這樣操作:

右鍵點我的電腦-->管理-->展開'服務和應用程式'-->internet信息服務-->找到你共享的目錄-->右鍵點擊屬性 -->點擊'配置'-->

映射下面 -->找到。aspx的可執行文件路徑複製路徑-->粘貼路徑-->擴展名為".html"-->然後把檢查文件是否存在的勾去掉這樣就可以了

© 網站版權與免責聲明

1、【鴻茂傳媒】獨立擁有本網站相關網頁內所有資料的版權;

2、未經【鴻茂傳媒】的明確書面許可,任何人不得對其進行複製;

3、本網站未註明【鴻茂傳媒】的文章,均來源於網絡,僅供大家學習與參考;

4、如有侵權/違規/不妥請聯繫客服qq或郵箱刪除,敬請諒解;

5、【鴻茂傳媒】保留隨時更正、修改、更新本聲明的權利。法律申明

服務需求留言板
*緊急問題聯繫客服
提交
提交需求
工作日: 8:30 - 22:00 在線qq客服

掃碼諮詢微信客服

鴻茂傳媒企業居間
頂部