Drupal Modules 這個網站的原作者 John Forsythe 在他的網站上頭寫了一篇How I Survived a 2300% Traffic Increase With Drupal,裏頭提到:他在他網站,寫了一篇有關 Drupal 的文章,因為被放到 Reddit 的首頁(性質就像 funP 或 HEMiDEMi 的網站),於是那幾天的流量,直接增加了 2x 倍。
他言簡意賅地,以條列式的方式舉出了五點,如何讓你的 Drupal 可以撐過這類的災難(撐過災難,你的網站就離大紅大紫又更近一步了)。其中,只要做到前兩點,就可以有某種程度上的改善。我在這邊做個簡單的翻譯,有興趣的人可以看他的原文。
- 開啟 CSS Aggregation
- 開啟 Page Caching
- 關掉那些花費不少資源的 block
- 讓你的圖檔盡量地小
- 使用一個靠得住的網站空間提供商(web hosting)
開啟 CSS Aggregation
Drupal 的成功因素之一,來自於它廣大的社群與豐富的模組,但這也間接造就了大量的 CSS。如果你建置了一個使用 40 個模組的 Drupal 網站,裏頭,可能會有 20 個模組有各自的 CSS 檔,加上 Drupal 與 theme 原有的…也就是說,對於一位來逛你網站的人,他(她)至少得下載 20 多個 CSS 檔才有辦法看到完整你的網站。
這 20 多個 CSS 檔的下載,會讓瀏覽你網站的人,因此得多等待個幾秒,然後呢,如果遇像上流量大的時候,說不定還因此讓你網站的機器掛了!! 很幸運地,有個簡易的解法:CSS Aggregation。從 Drupal 5 開始,Drupal 有個功能,它可以把幾乎所有的 CSS 檔合成一個,這樣一來,來瀏覽網站的人,就只要下載一次,節省了還蠻可觀的時間。
開啟 CSS Aggregation 的功能:Site Configuration > Performance. Enable CSS Aggregation
Drupal 6 還提供了 JavaScript Optimization,一樣是讓很多個 javascript 檔變成一個。Drupal 5 的話,可以使用 JavaScript Aggregrator 這個模組來做到同樣的事。
開啟 Page Caching
Page Caching 是另一個與網站的效能有關,非常重要的一個功能。
開啟 page caching 對於沒有註冊的使用者來說,他們瀏覽到的網頁大多是經過 cache 的,所以並不需要與資料庫進行數次至數十次的存取,只需要兩三次即可,效能的改善很明顯。
大部分的 Drupal 網站,只需要開啟 “normal” 模式就行了喔。
關掉那些花費不少資源的 block
這一段大略的意思是說,大部分的使用者,經由 social-media 這類的網站(ex, funP, Reddit, Digg) 來到你的網站上時,就只會看那麼一篇,並不會去點選你網站上的其它網頁。所以呢,與其放了很多佔用系統資源的 block,還不如只留下比較有用的,其餘的(像是亂數秀出一些照片)就拿掉,這樣就可以讓你的網站在面臨突然的大流量時,活了下來。
所以得多多利用每個 block 的 block visibility 區塊,跑選擇性地決定每個 block 出現的時機。
ex,
讓你的圖檔盡量地小
如果你的網站上頭使用了大量的 PNG 圖檔,那就一定要試試 PNGOUT,這個可以讓你的 png 大大瘦身的軟體。作者說,經過他的使用經驗與比較,PNGOUT 硬是比 OptiPNG, PNGCrush, 和 AdvPNG 來得好,產生出來的檔案就是比較小。
使用一個靠得住的網站空間提供商(web hosting)
這一部分就沒什麼好提的了,因為大家都知道,選一個好的 web hosting 真的是差很多!!!!
又,如果想更進一步了解怎麼優化你網站的效能,可以參考原作者的另外一篇文章:How Database Configuration Can Slow Down Drupal.
翻譯後的個人看法:
接下來是我自己對於他的文章的一些看法:
- 首先,我覺得前兩點真的可以改善一個網站的效能很多,尤其當你確定不會對網站的功能有任何改變,所以 css, layout, node, block, page 這類東西都固定的時候,打開 css aggregration (javascript optimization) 與 page caching 真的改善很多。重點是,這兩個功能的開啟只是點點滑鼠就好了。
- 其次,我因為工作需要,常常使用 PNG 來做為網站的圖示,經過試用後,發覺 PNGOUT 真的很優,推薦。
- 這是一篇教大家怎麼以很簡易的方式,讓 Drupal 加速的方式。會有這些需求,主要是因為 Drupal 的模組功能很強大,加上它一直提倡 MVC (它叫 MTV),所以無法單單就網站效能優化多少。不過也因為它這麼有彈性,才會讓我們都一股腦兒愛上它的吧 :)
- 感謝原作者願意提供他網站上的圖片供我使用 :) Thx for John’s kind for letting me make use of those screenshots located on his website.