mage_reportsモジュールを無効にして速度最適化?
-
16-10-2019 - |
質問
Magentoの速度を最適化することを考えると、サイトをスピードアップするためにキャッシュ(PHP、データベース、さらにはフルページキャッシュ)など、いくつかの可能性があります。
もう1つの可能性は、行われた処理量を減らすことです。つまり、ショップで実行されているモジュールの数を減らすことです。
最近、mage_reportsモジュールを無効にすることが可能か /安全であるかどうか疑問に思いました。
これはファイルにあります app/etc/modules/Mage_All.xml
なので
<Mage_Reports>
<active>true</active>
<codePool>core</codePool>
<depends>
<Mage_Customer/>
<Mage_Catalog/>
<Mage_Sales/>
<Mage_Cms/>
</depends>
</Mage_Reports>
そのため、コアがバンドルされており、他のいくつかのモジュールに依存します。
ただし、Mage_Reportsを依存関係として持っている他のモジュールは見られません。
私はそれをテストストアで無効にしましたが、すべてが正常に実行されているようです。
質問=> もちろん、レポートデータを失う以外に、このモジュールなしでストアがうまく実行できるのは本当ですか?
または、このモジュールがアクティブになっていないときに私のストアが壊れるポイントはありますか?
解決
管理パネルグラフも無効になっている限り、あなたの店はうまくいくかもしれません。現実には、プログラマーと、モジュールが無効になっている状況をどのように処理しているかということです。問題は、Magento 1.xには、その問題を自動的に解決する処理メカニズムがないことです。あなたが見たら
public function getResourceModelInstance($modelClass='', $constructArguments=array())
{
$factoryName = $this->_getResourceModelFactoryClassName($modelClass);
if (!$factoryName) {
return false;
}
return $this->getModelInstance($factoryName, $constructArguments);
}
それは戻ってきます false
モジュールが無効になっている場合。それはすべてを意味します Mage::getModel('reports/..
そうなるでしょう false
そして、あなたがそれを(あるはずの)オブジェクトに呼びかけようとする方法は何でもあなたに投げます Call to a member function on a non-object
PHP致命的なエラー。
Magentoチームは仕事をしましたが(まあ、実際にはそうではありませんでした。たとえば、管理者がダッシュボードで破損する必要がある場合、実際にはそうではありません)、サードパーティの拡張機能がそれらの状況をどのように処理するかを知ることはできません。 Reports
モジュール。
だから、あなたがすべての状況を処理していることを確認するなら reports
呼ばれ、その後、それを無効にすることができます。そうでなければ、そうしないでください。
他のヒント
モジュールを無効にした場合に何が起こるかはわかりませんが、無効化せずに処理の影響を停止する方法(おそらく)を伝えることができます。
その処理コストはすべて、オブザーバーからのものです。そしておそらくXeonの仕事ですが、それはここでは関係ありません。イベントの観察を止めることができれば、オーバーヘッドを排除できます。
素朴な方法は、config.xmlを編集してコメントアウトすることです。それをしないでください。
正しい方法は、mage_reportsに依存し、config.xmlだけを持っている独自のモジュールを作成することです。その中で、Front Endタグを定義し、mage_reportsのすべてのオブザーバーにコピーします。次に、彼らが観察しているイベントを、解雇されることのない現実のイベントではなく、いくつかのナンセンスではないイベントに変更します。次に、無効の値を持つタイプという名前のオブザーバーの下にタグを追加します。
app.phpでディスパッチイベントを見ると、それが機能することがわかります。障害のあるオブザーバーで彼らを上書きします。何も呼ばれず、何も壊れません!