談ASP的討論功能,這一路過來的旅程

来源:互联网 发布:java web sqlserver 编辑:程序博客网 时间:2024/05/18 15:24

客戶的網站有一個討論區的功能,一直以來很讓人頭疼的是效率一直不好!

 

除了開瀏覽頁面的效能很糟糕,點入單篇單篇的文章更是讓人不敢領教!

 

從前半年開始就一直思考要怎麼的改善..............................................

 

因為這一路走來真的有點辛苦,希望寫這篇文章也能夠幫助一些還在ASP環境中努力的朋友們!

 

STEP 1 : [更新了版面的配置與分頁搜尋的方法]

 

剛接收到這個任務時,看了原碼發現版面的配置與ASP程序的寫法,真的很像是網上很多的範例程序寫法,當然應用在一般的討論區應該是沒問題,但是面對那麼大的討論區資料群 (主題有20万,回覆進上百万),所以首先就改了分頁搜尋的方法,改採用SQL2000的Cursor的分頁搜尋方式,似乎就改善了一些,可惡的是因為討論區好用了..但這個方法還是撐不了多久!

 

STEP 2 : [改採討論區首頁部要搜尋那麼多的數據]

 

客戶要求要進入討論區的第一個頁面要在1~2秒反應出來,針對那麼龐大的數據量,真的是難為了巧婦[因為無米之炊阿],百般的無奈下那就乾脆使用 SELECT TOP 2000 A,B,C FROM BOARD 的爛方法了

 

STEP 3 : [新增討論區瀏覽附表]

 

但結果到最後還是被發現這是無法解決問題的癥結點的,因為這樣的海量數據本來就應該做不同的處理,所幸有一天的晚上睡覺想到應該可以把海量的數據拆開給瀏覽的資訊用途 [除了建立實體的TABLE之外,也建立VIEW來幫助前台搜尋使用],但好景不常阿,點擊內容頁面的時候,因為回覆量太多,還是不能滿足需求了

 

STEP 4 : [改採靜態頁面的方式處理討論區內容顯示]

 

 

這一個步驟宣告失敗,因為內容頁面的每一則話題要有一個實體HTML那要有多少文檔阿,在來WINDOWS的服務器可以承受那麼多的文檔存放在一個文檔夾中嗎?就算分年月去存放這頁文檔!但是萬一討論區改版面的時候那怎麼辦呢?

這幾個問題一直在我腦海中打轉,都得不到好的答案,所以最終宣告失敗

 

STEP 5 : [改採XML的方式處理] --> 終於改善了也滿足需求了

 

有一天因為努力的採用靜態頁面的產生,突然想到為什麼一定要靜態的頁面呢?難道不能就讓數據歸數據,版面歸版面!

在版面中去讀取已經形成的數據不就行了!有了這個想法,覺得一定可行!在網上搜尋了一些有關於XML/SOAP的處理模式

終於讓我把討論區給搞定了...^_______________^||

 

討論區的內容中,主題跟回覆全部都是來自XML文檔,當有新的主題跟新的回覆的時候就及時的產生XML的文檔

並竟在產生單篇主題跟回覆的時候所花的時間是可以被接受的[因為就算多花一秒鐘去寫XML文檔,那也只是一個網友感覺,而不是所有人的感覺,當然也不是客戶的感覺囉],若內容頁面真的需要即時資訊的,才勉為其難的開CONN跟RS去SQL撈取

 

STEP 6 : [獨立數據庫從SQL2000到SQL2008]

 

這個步驟正在進行當中,解決了瀏覽根管理討論區的問題之後,伴隨著另外一個問題發生了,那就是蒐尋的時候效率非常的曼,根留覽主題跟內容有天壤之別!這時候在所有網上搜尋了所有可以解決的方案都是指向SQL的FULL TEXT SEACH但是SQL2000好像又沒有斷詞的功能!

我覺得當程序員真的都要有隨時被雷擊的能力,因為有一天的下午我又被雷給擊中,那既然這樣子的話,討論區的數據就移到SQL2008上面囉,搜尋當然也就靠著SQL2008的搜尋增加模塊去補強!事實證明這樣子的方法是可行的!

 

底下的工程師問到那實時數據要從SQL2000來怎麼辦呢?那就使用SQL SERVER的繫結功能就可以實現了喔!

 

 

 

以上是我改善客戶討論區的過程,希望分享給朋友們,提供各位有個新的思路囉....^____________^||

 

文章中提到的一些初淺技術,在分享給各位囉...