3

私のチームと私は、Magento Enterprise Edition で新しいストアとビューを迅速に立ち上げていますが、キャッシングで問題が発生しています。明確にするために、キャッシュ部分自体はうまく機能します。ビルドに約 17 秒かかる複雑な製品がいくつかありますが、キャッシュされた後、ページは 300 ミリ秒で読み込まれます。これは素晴らしいことです! 残念ながら、深刻な負荷 (高トラフィック) でキャッシュをクリアすると、すべてのページ リクエストがキャッシュにデータを入力しようとするキャッシュ ミス ストームが発生し、平均負荷が 50 を超えると Web ヘッドが失速するようです。

これを回避するための提案はありますか?新しいコードのデプロイや、コンテンツや構成の変更だけのためにキャッシュを事前にウォームアップするためのベスト プラクティスは文書化されていますか?

これは関連している可能性があるので、それを含めます。ボタンをクリックしてキャッシュを更新した後、更新プロセスが完了する前に、フロント エンドのほとんどのページが 500 エラー コードと一見ランダムなエラー メッセージで終了します。何が原因でしょうか?

4

1 に答える 1

0

CMS ブロックが保存された後にキャッシュをウォームアップするソリューションを実装しました。このソリューションからインスピレーションを得て、さまざまなケース (製品の保存、CMS ブロック、CMS ページ、カテゴリの保存など) で同じことを行うことができます。

このコードは、observer を使用して CMS ブロックの保存後にトリガーできますcms_block_save_after

/**
 * Clean targeted cache block and warmup if content is provided
 */
public function clearBlockHtmlCache(Varien_Event_Observer $observer)
{

    $block = $observer->getEvent()->getObject();

    $id = $block->getCacheKey();

    // Remove only specific cache block
    Mage::app()->getCacheInstance()->getFrontend()->remove(strtoupper($id));

    // no print, it's ok just warmup cache with filters processing
    $block->toHtml();
}
于 2016-09-13T15:52:55.880 に答える