.NET偽靜態使用以及和純靜態的區別
一、偽靜態的用處
有些使用者覺得,偽靜態和真靜態實際被收錄量會相差很大,
其實不然,從你個人角度,你去判斷一下一個帖子到底是真靜態還是偽靜態?估計很難看得出,因為所謂靜態的意思,就是地址中不帶問號,不帶問號的就是靜態,
管他是真的還是偽的?搜尋引擎看得出嗎?所以說,其實不論是真的還是偽的,其實對於搜尋引擎來說都是一樣的,搜尋引擎沒有說,你這個是偽的,我不收錄你。
追
根究底來說,為什麼搜尋引擎會不收錄帶問號的網址?因為搜尋引擎怕由於問號而進入死迴圈,稱為“搜尋機器人陷阱(Spidertraps)”(以前動網就
有這樣一個漏洞,蜘蛛進去出不來了),所以很多時候帶問號的地址搜尋引擎是不會進去的,偽靜態對於搜尋引擎來說,其實就是靜態,因為地址中沒有帶問號,所
以沒有真靜態比偽靜態收錄得多的說法。
二、為什麼選擇偽靜態?
有很多使用者說:真靜態不好嗎?為什麼不用真靜態?訪問起來不是更快嗎?負載不是更好嗎?等等等等。。。。。。
在這裡,其實只用一個問題來回答:為什麼選擇MYSQL?很多使用者大概不明白為什麼那麼多大型論壇都選擇了MYSQL資料庫作為儲存機制,大概大部分都是想:“因為DZ用了MYSQL,所以就是MYSQL”。
其實不然,試想DZ為什麼會在那麼多論壇程式並存的日子生存下來並笑傲江湖,很大原因是因為DZ用了MYSQL。試想如果大C當年改的程式是一個文字論壇,那還會有DZ的今天嗎?或者從另一個角度問,為什麼那麼多大型網站都選擇了MYSQL而不是文字作為儲存機制?
所謂文字論壇,實際就跟真靜態的說法差不多了,將資料儲存在空間上面,大量讀寫硬碟,等等。。。。。。
為
什麼這種寫法會被淘汰呢?我相信答案不會是老師所說的:“Discuz!目前有 2129867 篇帖子,儲存成html的話大約是
20799M,也就是 20G左右。這當中還不計算由於磁碟儲存機制造成的空間浪費(100個 1k的檔案佔用的空間可能會是200K)。”
這種說法從我個人觀點來看,這個理由不能給使用者不使用真靜態充分的理由。然而,另一個理由卻是值得我們注意思考的,也是為什麼絕大多數站都不選擇生成靜態:
“刪除、更新這些html內容會導致大量的磁碟io操作以及大量的磁碟碎片。”
正如上面的說法,在實際當中確實會導致大量的磁碟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導致磁碟出現碎片甚至出現磁碟壞道。
轉自:http://www.cnblogs.com/zthsn/archive/2010/01/09/1642884.html
這裡都是說些很實際的例子來說明問題了。
三、偽靜態的壞處
當然猶如一篇文章的作者所說的:"如果流量稍大一些使用偽靜態就出現CPU使用超負荷,我的同時線上300多人就掛了,而不使用偽靜態的時候同時線上超500人都不掛,我的ISS數是1000。”
確實是這樣的,由於偽靜態是用正則判斷而不是真實地址,分辨到底顯示哪個頁面的責任也由直接指定轉由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裡寫
<section name="RewriterConfig" type="URLRewriter.Config.RewriterConfigSerializerSectionHandler, URLRewriter" />
configSections>
<httpModules>
<add type="URLRewriter.ModuleRewriter, URLRewriter" name="ModuleRewriter" />
httpModules>
<!-- 下面是配置重寫URL規則 -->
<RewriterConfig>
<Rules>
<RewriterRule>
<LookFor>~/Products/Jurisdiction_(\w{3})\.aspxLookFor>
<SendTo>~/En/Jurisdiction.aspx?jurid=$1SendTo>
RewriterRule>
<RewriterRule>
<LookFor>~/Articles/(\d{1,})\.aspxLookFor> <!-- 這個是被代替後的檔名,使用到正規表示式 -->
<SendTo>~/En/Article_view.aspx?article_id=$1]]>SendTo> <!-- 這個是要給代替的網頁,一般是帶有問號後面帶引數的網頁 -->
RewriterRule>
<RewriterRule>
<LookFor>~/Articles/(\d{1,})_(\d{1,})\.aspxLookFor>
<SendTo>~/En/Article_view.aspx?article_id=$1&page=$2]]>SendTo>
RewriterRule>
Rules>
RewriterConfig>
這樣比如上面的網址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"-->然後把檢查檔案是否存在的勾去掉 這樣就可以了
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12639172/viewspace-627047/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 偽靜態、靜態和動態的區別
- 靜態SDRAM和動態SDRAM的區別
- 靜態方法和例項方法的區別以及如何恰當使用
- Discuz!X3.1標籤偽靜態修改和偽靜態規則
- .htaccess 偽靜態
- 偽靜態配置apache 和nginxApacheNginx
- 區域性變數和全域性變數(靜態和非靜態)區別變數
- Java中靜態跟非靜態的區別總結Java
- shopnc怎麼開啟偽靜態 shopnc開啟偽靜態的方法
- 動態圖和靜態圖的程式碼區別
- pbootcms偽靜態教程boot
- thinkphp Nginx偽靜態PHPNginx
- net 靜態方法與非靜態方法
- c#物件導向- 靜態成員和非靜態成員的區別C#物件
- 【知識分享】動態ip和靜態ip的區別
- 動態IP和靜態IP有什麼區別?
- 網站偽靜態配置網站
- thinkphp 偽靜態規則PHP
- nginx偽靜態檔案Nginx
- 動態IP與靜態IP的主要區別
- .NET探索模型路由約定實現偽靜態模型路由
- 【普】靜態IP和動態IP有什麼區別?
- 【科普】靜態IP和動態IP有什麼區別?
- 伺服器動態ip和靜態ip的區別和特點伺服器
- PHP重定向與偽靜態PHP
- Typecho程式偽靜態規則
- ZBlogPHP怎麼生成偽靜態?PHP
- 寶塔如何新增偽靜態
- 靜態網頁與動態網頁的區別網頁
- 動態分佈與靜態分佈的區別
- 徹底搞懂訪問者模式的靜態、動態和偽動態分派模式
- Linux下快速靜態編譯Qt以及Qt動態/靜態版本共存Linux編譯QT
- 靜態庫和動態庫的製作以及Bundle資原始檔的使用
- 你知道什麼是偽靜態嗎?它有什麼作用?如何實現偽靜態呢?
- PbootCMS偽靜態怎麼設定?boot
- nginx偽靜態規則重寫Nginx
- 靜態網格體和骨架網格體的區別
- 靜態域與靜態方法
- Yii2配置Nginx偽靜態的方法Nginx