天天看點

關于未來網站通路速度及背景查詢速度的優化建議

1、 資料庫設計:資料庫内所有表結構均添加索引

調整原因:

近日資料庫壓力很大,經查有些大資料量表的查詢速度很慢,導緻資料庫伺服器CPU一直持續90%-100%,将這些表添加索引後,CPU很快變正常。

2、 将大資料表做分庫、分區處理:

具體操作如下:

1)、将大資料表與主資料庫分離,單獨建立一個資料庫,然後将這些表做分區;

2)、将資料插入到消息隊列内,背景利用windows計劃任務執行(5分鐘執行一次)C#控制台程式将消息隊列内的資料批量(消息隊列内有50000條記錄,一次性插入到資料表内)插入到相應的資料表内;

例如:使用者通路日志,每次使用者通路一個頁面的時候我們之前的操作是直接将資料插入資料庫,這樣做對資料庫的通路及操作太大,嚴重影響其他資料插入、查詢的效率,利用分庫、分區、消息隊列完成此操作的好處是使用者通路頁面的時候不直接對資料庫操作,而是在消息隊列内積累一定數量的資料後批量插入資料庫,隻執行一次資料庫操作,而且因為資料庫分離的原因,對其他的查詢及插入不會有影響;

3、 圖檔站點分離:

1)、新建立一個二級域名,并将二級域名做CDN處理;

2)、網站前台所有圖檔均使用這個二級域名;

使用者通路網站時,如果圖檔和網站都放在一個站點内,會使得所有操作都在一個站點内進行,一個站點在CPU内的程序有限,都被圖檔使用了,會影響其他使用者的正常下單及其他操作,這樣操作的好處是可以減輕一個站點的壓力分流到另外一個站點,如果有條件還可以多建立幾個圖檔站點放到不同伺服器上(但要做叢集操作),JS及CSS也同樣可以做這樣的操作。

4、 資料緩存:

将一些不經常改變的資料,比如商品資訊、商品圖檔資訊、分類資訊等在程式内做緩存處理。

近日發現業務資料庫執行的SQL句中,圖檔的資訊每分鐘要查詢資料庫2000多次甚至更多,這樣頻繁的去查資料庫會給資料庫造成很大的壓力,如果做了緩存處理之後就不會對資料查詢那麼頻繁了,如果有條件的話可以配置一個高速緩存伺服器(但目前還不知道如何操作)

5、 CSS、JS、圖檔緩存問題:

每次圖檔、CSS、JS有調整後上傳覆寫後,将頁面内這些檔案後面增加版本号,例如一個圖檔名稱為test.jpg的圖檔被覆寫後在頁面上這個圖檔後面增加版本号:test.jpg?v=1000,CSS、JS同理。

因為有的時候客戶在一天内頻繁替換一張圖檔,而替換後由于CDN緩存問題導緻圖檔一直維持原來的狀态,無法變為替換後的圖檔,這樣做的是為了告訴CDN伺服器這個圖檔有改變了,需要CDN重新讀取,而不是讀取緩存,增加版本号後圖檔馬上就會變為新替換的圖檔。

6、 CSS、JS壓縮問題:

利用程式,将頁面内所有JS合并為1個JS并進行壓縮,CSS同理。

這樣做的好處是減少浏覽器解析JS及CSS的次數,增加解析速度,使得網站通路速度變快;

7、 根據雅虎軍規對網站通路速度進行優化(雅虎軍規詳見附件):

LifeVC網站未優化之前網站打開速度為22.68秒,優化之後:8.78秒;

8、 訂單跟蹤:

訂單從生成到完結,沒一步不要有日志,每個狀态的轉換都必須要有日志跟着,否則訂單一旦出錯,都不知道是什麼人做了操作,查都不知道在哪裡查。

       調整原因:

有些時候會出現一些異常訂單,因為沒有日志,導緻不知道這個訂單是怎麼變成這樣的。

9、 接口方面:

所有跟第三方的接口,接收與發送資料都要記錄原始檔案,接收到的什麼就存什麼。

營運期間,如果出現了錯誤,我們可以直接拿出原始檔,與第三方公司理論,不然我們隻能吃啞巴虧。