《構建高性能的web站點》讀書筆記--緒論


      作為程序開發人員,都夢想着有朝一日,能構建一個能穩定、擴展性強應用程序。當看到《構建高性能的web站點》時,感覺這本書可以幫助我們去接近這個目標:他實用性很強,從網站各個方面來講,從網絡、服務器軟件、腳本語言以及到緩存、負載均衡、數據庫的優化、文件共享、性能監控等都有涉及,可以讓沒有實際去體驗這一個個場景的開發人員獲得這樣的經驗,增長知識。

等待什么

     首先讓我們看一下從輸入一個url到頁面呈現到我們眼前,我們在等待什么?

     從一個網址輸入,不只是頁面的一個請求,還有圖片、樣式、腳本等這些文件請求,每個請求又會經歷一些相同的歷程:數據在網絡的傳輸(傳出和傳入)、服務器對請求的處理返回數據、還有本地對返回數據的渲染。雖然這些請求是並發的,但是一個網頁的一個完整過程總是取決於那個最后處理完的請求。

怎么做

     如果你是一個網站的構架者,你能在這三個方面做些什么??

 

     你能讓用戶都在電信或聯通的網絡里嗎,你能讓用戶都10M、20M的接入嗎??很顯然不能,但是我們可以在布置不同的服務器在電信和聯通的網絡和不同的區域,讓不同網絡和區域的用戶都能以最優訪問,我們可以讓我們服務器的以更高的寬帶接入,來減少我們這段數據的出入時間;精簡頁面內容和對頁面、文本、圖片等數據的必要的壓縮,也會對減少網絡的傳輸時間,但是如gzip等的壓縮會增加兩端的處理的時間,這個要根據實際情況選擇了。

 

     再說本地對返回數據的渲染,這跟用戶電腦的配置、所使用瀏覽器的版本和瀏覽器本身的機制有很很大的關系,但是這都不是我們控制得了的,但是我們可以從以下幾個方面來優化:減少頁面http請求,通過合並圖片、樣式、js和瀏覽器緩存等,減少瀏覽器的處理壓力,更少的請求還會減輕服務器壓力和網絡傳輸時間;精簡頁面內容,移除不必要的內容如.net中的viewstate這些不僅減少傳輸的數據,還有利於頁面加載。

 

     另外一個優化的就是服務器對請求的處理了,這個是我們可以大展拳腳的地方了。

大致可以分為以下幾塊:

      服務器的配置,主要是硬件配置,決定了服務器的計算速度;

      操作系統和服務器軟件的優化,根據不同的應用程序可能需求也會不一樣;

     應用程序的優化,緩存是不可不說的:數據的緩存,動態內容的緩存、頁面的靜態化,多台服務器時緩存的共享,多台緩存服務器的時分布式緩存等;

      數據庫或其它非結構化的數據,存儲引擎、索引等,數據庫的切分、同步,讀寫分離等等都可以讓我們提高數據庫支撐更大的業務量;

      頁面部件的分離,對資源的不同划分到不同的服務器,數據庫的服務器、圖片服務器、文件的服務器、緩存服務器等,更多的請求分發時,負載均衡又是一個更重要的問題;

     還有就是程序的細節,這要對語言或平台的充分的了解,優良的程序設計和高效的代碼也是一個重要的因素。

 

除此之外

     網站沒可能一出來就是能支撐所有情況的,我們在不同的階段可能會有不同的關注點,以上的任何因素在某段時間可能會為制約網站性能的最主要因素,腦子中的或圖紙上的系統都不是好系統,只有經過實際檢驗好的系統才是良好的系統。因此對於網站來說,一個更重要的是擴展性,我們不能只做到眼前的,還應該考慮到下一步,在腦子中和現實的系統中為以后的擴展做好必要的准備。

     減少視覺等待,這個可以說是一個有趣的技巧。在一個成熟系統上,讓系統處理快上2秒,可以說是代價相當大或者說現階段是不可能的,但是可以一個好的交互讓用戶在等待時不太焦慮進而可以輕松的多等上2秒,對系統來說是一個相當好的消息。但是同時如何設計一個好的交互,去利用用戶的喜好和人性(哈哈,有點遠了),這可能又是一個更高深的學問了,又可能比你去研究計算機或程序要困難了。

 

    建議想做將軍的程序員去讀讀這本書。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM