20101005註:目前產品數量1000/p以上的magento網店所能達到的速度是4-7/s
20101104註:嘗試的人不少,不過請注意不要在運營中的網站上測試,吾將會繼續更新.
測試載入器:pagespeed,pingdom,firebug 等。
注:如若嘗試,請不要使用正在使用中的系統測試.下面所有提到的方法,都正在測試改進中.本人不對任何測試而引發的問題負責,不回答相關的問題.只是記錄而以.
magento功能很強,但是對於大部分功能,我們基本上不用,比如很多國外的支付模組,運費模組.不要只是簡單的在後台進行關閉.我使用magneto最新版的代碼為基礎,試圖定製精簡出一個精簡的版本.下面是我的步驟:
1.從後台關閉如下模組,儲存後清空緩衝測試下各個功能,目前沒有發現問題
Mage_AdminNotification
Mage_Api
Mage_Bundle
Mage_Centinel
Mage_Downloadable
Mage_GiftMessage
Mage_Tax
(上述兩個模組,雖然catalog模組不依賴於這兩個模組,也就是說前台沒有問題,但是在編輯產品時會用到。所以可以考慮在產品上線後,關閉,當然如果你有耐心,可以修改背景模板,刪除掉對這兩個模組的block及相關model的引用。)
Mage_GoogleBase
Mage_GoogleCheckout
Mage_GoogleOptimizer
Mage_Install
Mage_PaypalUk
Mage_Poll
Mage_Usa
Phoenix_Moneybookers
2.修改模組設定檔,徹底關閉模組,這樣的作用可不只是說減少了對這些檔案的分析,同時這些模組對應的layout檔案,也不會被載入.
進入app/etc/modules目錄,刪除如下模組的設定檔
Mage_Api.xml,Mage_Bundle.xml,Mage_Centinel.xml,Mage_Downloadable.xml,Mage_Weee.xml,Phoenix_Moneybookers.xml
編輯Mage_All.xml,徹底關閉如此這些模組:
Mage_AdminNotification
Mage_Api
Mage_Bundle
Mage_Centinel
Mage_Downloadable
Mage_GiftMessage
Mage_GoogleBase
Mage_GoogleCheckout
Mage_GoogleOptimizer
Mage_Install
Mage_PaypalUk
Mage_Poll
Mage_Usa
修改app/etc/local.xml ,禁用local code pool中的模組.通常沒用到.
清除緩衝後,測試各項功能,正常.
3.清除page.xml,關於js檔案,我刪除了大部分,最後只保留了
<action method="addJs"><script>prototype/prototype.js</script></action>
<action method="addJs"><script>prototype/validation.js</script></action>
<action method="addJs"><script>varien/js.js</script></action>
<action method="addJs"><script>varien/form.js</script></action>
<action method="addJs"><script>varien/menu.js</script></action>
<action method="addJs"><script>mage/cookies.js</script></action>
清除了:
<action method="addJs" ifconfig="dev/js/deprecation"><script>prototype/deprecation.js</script></action>
<action method="addJs"><script>lib/ccard.js</script></action>
<action method="addJs"><script>scriptaculous/builder.js</script></action>
<action method="addJs"><script>scriptaculous/effects.js</script></action>
<action method="addJs"><script>scriptaculous/dragdrop.js</script></action>
<action method="addJs"><script>scriptaculous/controls.js</script></action>
<action method="addJs"><script>scriptaculous/slider.js</script></action>
<action method="addJs"><script>mage/translate.js</script></action>
<block type="page/html_notices" name="global_notices" as="global_notices" template="page/html/notices.phtml" />
同時還需要在相應的模板檔案(涉及到head.phtml,主模板檔案[1column.pthml,2column-left.phtml...]),刪除掉對traslate和global notice的調用。另外,由於magento的mini search form block的ajax search autocomplete依賴於scriptaculous的control.js,所以如果去除掉這個檔案,則就沒有了ajax search autocomplte功能,同時還需要清除其它對應的模板檔案。我是覺得這個功能基本上不是很重要。註:根據自己的實際情況,清除相關的layout設定。另外,其實也可以考慮從CDN(如google)上載入prototype.js等相關檔案。以獲得更好的速度。比如,magento 1.4.1.1中,使用的prototype.js的版本是1.6.0.3。可以刪除掉調用,而直接在head.phtml中加入:
<script type = "text/javascript" src = "http://ajax.googleapis.com/ajax/libs/prototype/1.6.0.3/prototype.js " ></script>
其它的可清除BLOCK:
<block type="page/switch" name="store_language" as="store_language" template="page/switch/languages.phtml"/>
[header.phtml]
<?php echo $this->getChildHtml('store_language') ?>
<block type="page/switch" name="store_switcher" as="store_switcher" template="page/switch/stores.phtml"/>
[footer.phtml]
<?php echo $this->getChildHtml('store_switcher') ?>
4.清除catalog模組無用的block.當然這邊是指大部分通常不會用到的功能.magento產品有幾種類型,而通常我們用的是simple,所以,可以清除掉所有其它的產品類型相關的layout設定.(清除掉所有configurable,grouped,virtul)
5.清除無用的支付模組。這個其它之前的步驟中有做了一些,比如清除google checkout模組。這個步驟在最新版中是不會有問題的,但是在從舊版升級上來的版本中就存在問題。如果只是單純的關閉掉,則前台的onepage checkout會出現:
Fatal error : Call to a member function setStore() on a non-object in app/code/core/Mage/Payment/Helper/Data.php on line 72
解決這個問題倒也不難。進資料庫中的core_config_data表刪除掉相應的配置選項,清空緩衝就可以了。
註:我是想到什麼就測試實施,做到哪一步就記錄
6.magento中最重要最核心用的最多的恐怕要數產品模組,其中包括分類列表頁和產品查看頁。列表頁,我覺得可以根據實際考慮是否取消掉list/grid模式的一種,只保留一種,每頁顯示產品數只留兩個選項,一個是每頁N個,一個是顯示全部。甚至可以不要提這個工具列。我不知道減少一個block省掉的時間是不是肉眼能看的見,但是肯定會減少,至少會減少發多不必要的調用。何況是清除掉多個block.
末完...
7.我不使用multiple shipping addr.徹底關閉掉所有相關的BLOCK,清除LAYOUT和模板檔案.