構建高效能的web站點學習筆記一

2021-06-06 05:29:48 字數 2119 閱讀 5782

談到**優化,我們必須知道一次互動的過程中都經過哪幾個階段,然後在對應的階段採取優化措施

2.站點伺服器接收到請求並生成回應資料的時間

3.瀏覽器計算並在本地渲染的時間

根據上述三個時間段,我在這簡單的列舉一下常用的優化方案

1.增加頻寬

2.減少http請求:

1.設計簡單的網頁,裡面包含較少的和指令碼,但是這可能犧牲了美觀和使用者互動

3.合併js指令碼和css樣式表

可見這一塊屬於網頁的前端優化

3.加快伺服器的指令碼執行計算速度

我們大多數涉及到效能的站點中都使用的各種各樣額後台指令碼語言:php,jsp,python,asp.net等等這行指令碼都需要相應的直譯器進行解釋生成中間**,然後依託直譯器的執行環境中執行,所以生成中間**這段時間又成為我們為獲取效能提公升瞄準的一大目標,對於一些較強的商業支援的語言比如asp.net,jsp均有內建的優化方案(比如直譯器第一次執行,然後將結果快取下來),而對於開源的指令碼語言則依靠第三方元件來提供類似功能 比如php的apc元件 

4.使用動態內容快取

動態內容快取是指將動態生成html頁給快取起來,在以後一段時間內當有使用者訪問的時候直接跳過計算階段而直接輸出快取中的內容,聽起來的確很好,但是好的東西往往都會有些難度,我們必須考慮:成千上萬的快取檔案如何儲存,快取的命中率如何,快取的過期側略如何設計,在應用在多台web伺服器的分布式站點上我們需要考慮什麼?

5.使用資料快取

動態內容快取是將資料與表現一起打包快取,這有時候並不是我們想要的效果,例如乙個頁面中有一部分是不經常變的(頂部ogo),而所以另外我們可以發現有時候一些動態計算總是消耗在對於一些特殊資料處理上,這些資料更新過於頻繁,甚至占用大量的io時間,如果我們想要提高快取利用率,提高靈活性,以及效能的需求,所以引入了資料快取

更加細粒度的快取似乎可以避免網頁的整體更新。有些內容是需要實時更新的(關係型資料的讀取),如果採取動態內容快取的話,如果頁面有更新,那麼我們必須重新生成快取,這對網頁中不變的內容似乎有點不公平.

我們需要考慮的問題是:如何協調資料快取和網頁快取,能否將二者結合在一起呢,資料快取存放在哪?

6.動態內容靜態化

在動態網頁的內容中雖然避免了可觀的重複計算,但是需要每次呼叫動態指令碼直譯器判定快取是否過期以及讀取快取,這似乎有點多餘,關鍵是消耗了不少時間,直接讓瀏覽器訪問快取不是更好麼?這種情況下快取直接暴漏給html頁,我們普遍稱之為靜態化。

7.更換web伺服器軟體

8.頁面元件分離

9.合理的部署web伺服器

我們知道訪問的主機離我們的站點伺服器距離越遠,那麼經過的路由節點越多,如果不在同乙個網際網路運營商的網際網路中,還要經過執行商的頂級節點和骨幹網路,可想而知這樣要經過多少次儲存**,而且還要受不同執行商的出口頻寬限制,顯然我們希望我們的使用者和站點伺服器位於同乙個網際網路運營商的網路內,怎樣實現呢?

10.使用負載均衡

如果我們已經最大程度上的發揮了單台伺服器的處理能力,還不能滿足現實需要,那麼就需要更多的伺服器一起分攤工作,為此我們需要想各種不同的辦法實現web負載均衡,可能是簡單的http重定向,或是基於dns的輪迴解析,或者通過反向**伺服器來實現負載均衡排程,還可以通過lvs元件伺服器集群等方法.

11.優化資料庫

如果我們忽略了資料庫的優化,如果我們的表結構一塌糊塗,那麼可以說前面的工作白幹了,web伺服器與資料庫伺服器互動通訊一般是基於tcp協議,即便他們是在同一臺主機上也是如此,在資料庫設計的時候你需要考慮:

1.你是否合理的運用這種型別的索引?

2.你了解資料庫儲存引擎的特性麼?

12.考慮可擴充套件性

可擴充套件性對於我們來說是我們山窮水盡的時候被指引得一條星光大道,一旦擴充套件無法進行,那就是死路一條

13.減少視覺等待

有時候使用者的要求的是你不要不理我,實在不行的話給使用者一些提示吧

構建高效能Web站點 筆記四

第七章 web伺服器快取 對url對映進行快取 ssi模式下對內容的通讀 有什麼提高?需要了解url解析過程。對於apache,它提供了兩個磁碟快取和記憶體快取mod disk cache,mod mem cache。mod disk cache在磁碟上維護了一塊多個程序的快取區,在效能上比mod ...

原創 構建高效能的Web站點

原創 構建高效能的web站點 一 web站點高效能主要體現在 高可用,低成本,高效能,可擴充套件,易維護 二 構建高效能的web站點措施 1 瀏覽器端優化 快取1 瀏覽器快取 2 web負載均衡 快取2 反向 快取 3 web元件分離 快取3 動態內容快取 快取4 分布式快取 快取5 資料庫快取及效...

Web站點的傳輸 《構建高效能Web站點》閱讀1

1 資料是如何傳送的 a 應用程式將要傳輸的資料放入記憶體中 b 應用程式使用send等庫函式,通知核心將傳輸資料放入核心快取區。資料是以佇列的形式進入的,如果資料較多,則等前一波資料傳送完後,再傳送另外一撥資料,具體顯示為send會多呼叫幾次 c cpu通知網絡卡將核心緩衝區的資料存放到網絡卡緩衝...