ですから、もちろん、キャッシングは、他のほとんどの人と同じように、Magentoで私を最も混乱させるものです。現在、私たちが取り組んでいるサイトの1つはエンタープライズであり、もちろんFPCを利用しています。問題は、15分ごとに実行される在庫更新があることです。多くの注文は、電話やカタログを通じてMagentoの外部の外部システムにCSRに発注されます。
15分ごとにスクリプトが実行され、そのシステムのインベントリがチェックされ、Magentoのインベントリと異なるかどうかが確認されます。違いがある場合は、Magentoでインベントリが更新されます。すべてのMagentoメソッドを使用し、SQLなどは使用しません。
私たちは常にキャッシュの問題を抱えており、最新の手法をすべて試してきました。私たちが試している最新のものはRedisであり、他のサイトでも成功を収めています。ただし、サーバーに異常な負荷がかかっていることがわかり、ページがキャッシュされていないことは明らかです。
コードを掘り下げた後、すべてのモデルの保存または管理製品コントローラーの保存の後に、キャッシュを無効にする必要があるかどうかを確認しているように見えます。属性を変更すると、少なくともインベントリはFPCを無効にする必要があるとマークするようです。
無効化の意味について混乱しています。しばらく前に、同様のことについてカスタマーサポートに質問があり、これが応答でした。
販売後に在庫が減少した場合でも、製品、カテゴリ、CMSが変更されると、フルページキャッシュは無効な状態になります。
フルページキャッシュが無効状態になった場合、これはフロントエンドで何かが変更されたことを意味するわけではありませんが、最後の更新後に適用された変更はフロントエンドに表示されません。
ただし、FPCを常に検証することがビジネスロジックの必須事項である場合は、Magentoインストールを設定して、必要な頻度でcron機能を使用してFPCを自動的に更新することができます。
ただし、1.9と1.11 Enterpriseの両方で行ったすべてのテストで、FPCが無効になっていると、応答がキャッシュからプルされていないように見えます。これは、新しいアップデートがないというだけで彼らが言ったことと矛盾しています。
足りないものはありますか?特にFPCのためにMagentoで無効化がどのように機能するか、またはプロセスとコードを完全に理解するための適切なリンクについて、誰かが良い説明を持っていますか?
フルページキャッシュされている任意のページに対して、これを自分で試すことができます。processRequest
しかし、のメソッドは/app/code/core/Mage/Core/Model/Cache.php
、キャッシュされた応答で本文のコンテンツを設定し、ページがキャッシュされている場合はtrueを返す必要があることを理解しています。
テストするには、任意のページに移動し、キャッシュされてtrueを返していることを確認します。入って、製品(この場合は数量)を編集します。これにより、FPCが無効になります。ただし、以前にキャッシュされたページをロードすると、このメソッドではfalseが返され、キャッシュされたページではなくなります。これがページがキャッシュされているかどうかを判断するのに正確かどうかはわかりませんが、それが私の調査の結果です。私が間違っている場合は訂正してください。
更新:さらに調査したところ、管理者に製品を保存すると、コントローラーのアクションが
Mage_Adminhtml_Catalog_ProductController::saveAction()
次のメソッドを呼び出します
Mage::getModel('catalogrule/rule')->applyAllRulesToProduct($productId)
次に、Mage_CatalogRule_Model_Resource_Rule
クラスでapplyAllRulesForDateRange
メソッドが呼び出され、イベントが発生します
catalogrule_after_apply
フルページキャッシュモジュールがFPCタグのクリーンキャッシュ方式を監視および起動しているもの。基本的に、すべてのFPCキャッシュレコードを削除します。
これより前に、ロジックが製品タグとカテゴリタグに関連付けられているFPCレコードをクリアしている場合、これが必要な理由がわかりません。これはバグですか?