magento -- 給Magento提速之緩衝上的探索

來源:互聯網
上載者:User

標籤:des   blog   http   java   使用   os   檔案   io   

依然在為Magento提速做努力,除了內建的緩衝和編譯,之前的所作的很多努力都是從減少JS,Css,圖片等載入時間入手,而對頁面載入耗時最早有時也是最大的一部分--擷取頁面資料沒有做太多處理,以gap.cn為例,用firebug看下各個請求的耗時(資料受多方面因素影響,僅供參考):

 

可以看到js和css的載入時間一般是以幾十毫秒來計算的,而載入的第一步頁面資料卻要花掉將近一秒,在用各種方法縮短js,css和圖片的載入時間後,想要讓Magento跑的更快,就得想辦法從縮短這“781ms”處下手。

 

因為Magento複雜的代碼架構和EAV模式的資料庫,導致每次頁面載入都要讀取大量的php檔案和大量的資料表,內建的緩衝將一些常用的資料緩衝到了檔案裡,而不需要每次都去讀取資料庫,這提醒了我們一種思路,就是將頁面上常用的資料都緩衝起來,減少讀取php檔案和資料庫的需要。不記得在哪裡看到過一篇文章提到,Magento內建的緩衝方案相當保守,緩衝的資料很少,頁面載入時依然要從資料庫讀取大量的資料。我們所要做的就是改進緩衝的方案,將更多資料緩衝到檔案中去。

 

我對緩衝的研究不是很深,個人理解大概分兩種,一種是整頁緩衝,一種是局部緩衝,以我測試過的兩個快取區外掛程式為例闡述下觀點。

 

第一個外掛程式是一個整頁緩衝的外掛程式--Performance Booster,官網上的地址是http://www.magentocommerce.com/magento-connect/AITOC,+Inc./extension/4865/performance_booster,這個外掛程式開啟後,會在前台每訪問一個頁面後就產生一個靜態html,下次再訪問相同頁面時會直接讀取靜態檔案的內容,速度提升相當明顯,能將第一步html的載入時間從幾百毫秒直接提升到幾十毫秒。這個外掛程式的代碼裡監聽了一大堆事件,用來重新整理緩衝,比如後台修改產品資訊後保持的時候會重新整理對應的緩衝。

 

按說這個外掛程式已經將可能需要重新整理緩衝的狀況都考慮到了,但我在使用的時候卻遇到了麻煩。因為Magento是個高度開放的系統,可以安裝各種各樣的第三方外掛程式,也可以自己寫一些新模組進去。外掛程式不可能考慮到除了系統內建模組以外需要重新整理緩衝的情況,這就導致了頁面某些部分在後台資料已經改變的情況下前台沒有重新整理或者有一些功能塊直接出現異常無法使用。而我所經手的項目大多都裝有不少外掛程式,以及自己所做的修改,所以很難有機會用上這個外掛程式了。

 

第二個外掛程式是一個免費外掛程式--CatalogCache,官網上的地址是http://www.magentocommerce.com/magento-connect/netresearch/extension/2138/catalogcache,這個外掛程式功能很簡單,就是緩衝了Catalog/Product_View和Catalog/Product_List這兩個block的資料,對頁面上來說,也就是緩衝了產品列表頁的產品資料和產品詳細頁的產品資料,只緩衝局部,而不是整個頁面。經測試,在產品數比較多的列表頁和產品頁,開啟這個外掛程式後能帶來大概100ms--到200ms不等的速度提升。因為只緩衝了兩個block,所以外掛程式也只對列表頁和產品頁起效果。

 

這個外掛程式功能簡單,針對性強,所以也不用擔心會對列表頁和產品頁以外的東西造成影響,經過一段時間測試沒問題後已經用在了正式的項目上。當然推薦這個外掛程式並不是這篇文章的主要目的,而是這個外掛程式讓我覺得用同樣的方式給各種常用block寫緩衝是種安全而又實用的方式,雖然效果上肯定比不上直接讀靜態檔案來得快,但因為是自己一塊塊寫的,不需要擔心整頁緩衝時會有哪一塊遺漏了沒有照顧到。也就是說,不管你添加了多少第三方外掛程式,或者自己寫了多少功能,依然可以用這種方式來做最佳化,自己選擇性的給局部做緩衝。

 

得出我自己的觀點,整頁緩衝的適應性不夠好,無法應對各種不同的項目情況,如果你的Magento站只是在預設功能上套了個模板,可以嘗試下第一個外掛程式,如果項目有不少第三方外掛程式,甚至做了不少二次開發,那麼就放棄整頁緩衝方案。所以局部緩衝才是我認為最適合Magento的方案,雖然效果比不上整頁緩衝,但勝在靈活,安全,適應性強。

 

個人膚淺的觀點,歡迎拍磚!

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.