七步,提高網站的訪問速度

Jan06

  速度慢的網站很可能在第一次就失去的用戶,他們可以永遠不會再來了。進行下麵一步一步的優化工作,讓你的網站訪問速度從30秒到3秒的改變。下麵以某網站的實際運行情況為例為大家講解。

  第一步,用Ajax提高用戶體驗

  有的網站上鏈接字體的大小是根據點擊次數決定,所以每次點擊都要提交到服務器端並記錄次數,再在客戶端打開網站鏈接。這在localhost測試的時候沒有發現問題,但是部署到服務器上,會感到明顯的等待。解決辦法就是用Ajax。用戶點擊網站鏈接後就直接打開,再通過Ajax將點擊的事件提交到服務器端記錄。這樣用戶感覺不到任何延時。

  第二步,將邏輯移到客戶端的javascript中

  在開始的時候,“網站標簽高亮”和“手氣不錯”的功能都是提交到服務器端操作,然後返回結果的。其實,很多邏輯是可以移到客戶端,由javascript來實現的。Javascript非常強大,可以完成很多複雜的邏輯。將邏輯移到客戶端的javascript中,可以很有效的減少和服務器通訊的次數,獲得更好的訪問速度。

  第三步,解決進程的

  由於采用的是fastCGI的方式,配置了django.fcgi。可是,在係統進程中,有大量的django.fcgi進程被標記為<defunct>(失去功能)。這些進程會導致服務器有時無法正常訪問。開始嚐試用命令來kill掉這些進程,但是很快發現這無法從根本上解決問題。後來,一個老外在blog上提到一個解決方案,將django.fcgi改名為dispatch.fcgi。原來,dispatch.fcgi是一個dreamhost的係統進程,它的健壯性是可以得到保障的。果然,將django.fcgi改名為dispatch.fcgi後,這樣的現象再沒有出現。

  第四步,優化SQL語句

  SQL語句的執行通常也是一個很花費時間的操作。經過檢查,我發現我的一條SQL語句,是一個嵌套三層的子表查詢。而這條SQL還必須是一個RawSQL,即不能采用django的ORMaping。這意味著不能被cache緩存,每次都是真刀真槍的執行。更失敗的是,經過我的分析,這條SQL完全可以不執行。這是一次設計上的失誤,標準的overdesign(過渡設計)。當時,我是想通過數據庫得到一個最精確的統計值。後來發現,這個值完全可以用一個近似的常量代替。優化SQL,尤其是避免不必要的SQL執行,帶來的效果是非常明顯的。

  第五步,盡量減少頁麵大小

  隨著添加網站越來越多,發現django生成的首頁已經達到了80k。這是一個非常不能被接受的數字。開始檢查頁麵,很快發現了線索。第一,因為偷懶,頁麵中很多layout是用空格()實現的。第二,因為為了增加代碼可讀行,調試方便,每行生成的頁麵都增加換行符(n)。第三,最糟糕的是,大量的用了inlinecss。就是將cssstyle直接嵌入標記塊中。於是,我立即動手,用css的align解決layout,去掉n,將inlinecss抽象到獨立的css文件中。這樣下來,在不更改任何內容的情況下,80k變成了57k。(補充:由於網站鏈接大部分是打開新窗口,所以用了大量的target=_blank。在ylsdd的提示下,在html的head裏增加了,又節約了4k。) (責任編輯:admin) 這篇關於七步,提高網站的訪問速度的文章,11i到此已經介紹完了,希望對你有所幫助。
11i部分文章為網絡轉載,部分出處不明,如果有相關文章無意侵犯閣下之權益,希望來信說明!


由11i發表於 2014年01月06日,歸檔到目錄網上開店
相關的標簽:速度 訪問 網站 提高 一個 頁麵

Leave a Comment