2

フル ページ キャッシュを実装したいのですが、現在、対処すべき問題が 1 つあります。

私たちは、Zend と Varien のライブラリである Magento E-commerce Community Edition に基づく E コマース システムを使用しています。

出力をキャッシュできますが、唯一の問題は、次の状況に対処する方法です。

ユーザーがサイトにアクセスしてから、カタログ/製品に移動し、製品をカートに追加してから、カタログに戻ります。

問題は、製品をカートに追加するときに、更新が必要な特定のブロックがいくつかあることです。したがって、投稿リクエストのキャッシュを無効にすることはできますが、特定のブロックを更新する方法や、更新されるこの「プレースホルダー」を実装する方法を教えてください。キャッシングの「ベストプラクティス」またはパターンがいくつかあると思います。

PS magento 関係者へ: Enterprise Edition と有料モジュールについて思い出させないでください。

4

4 に答える 4

4

Magento Community Edition を使用してパフォーマンスを大幅に向上させる方法は 3 つあります。

1.ワニスを使う

Varnish (https://www.varnish-cache.org/) は、自身を「Web アプリケーション アクセラレータ」と呼び、透過的なリバース プロキシです。Squid を知っていれば、あいまいな考えを持っているよりも - Varnish は Squid に似ていますが、よりスマートで高速です。:)

Varnish を使用すると、独自のフル サイト キャッシュを実装できます。これは、私の経験では、Magento Enterprise Edition のフル ページ キャッシュよりもはるかに高速です。

ただし、Varnish は標準ツールではないため、Magento のインストールを通常の PHP ウェブスペース パッケージでホストしている場合、インストール/使用できない可能性があります。Varnish をインストールして使用するには、Varnish をサービスとして提供するシステムまたはプロバイダーへの (root) アクセス権が必要です。Varnish などのサービスを含む特別な Magento ホスティングを提供する Magento ホスティング プロバイダーがいくつかあります。

Varnish 自体は、すべての種類の静的ファイルとページ (製品ビュー ページ全体など) をキャッシュします。そのため、Varnish の使用を開始する場合は、Magento を適応させる必要があります。つまり、ページを静的コンテンツと動的コンテンツに分離する特定のモジュールを作成する必要があります。

例: 製品ビューは、カート ウィジェットのように動的パーツ/ブロックのプレースホルダーを含む 1 つのページです。静的コンテンツ (ページ) は Varnish によって配信され、動的コンテンツはアプリケーション サーバー (Magento) への AJAX 呼び出しを行うクライアント (ブラウザー) によって読み込まれます。

したがって、アプリケーション サーバーはこれらの動的ブロックとチェックアウト/顧客ログインのみを呼び出すため、パフォーマンスを大幅に節約できます。

http://www.magentocommerce.com/magento-connect/pagecache-powered-by-varnish.htmlのような Varnish 用の Magento モジュールが既にいくつかあります。「Varnish Magento」を Google で検索すると、十分な情報が見つかります。

2.独自のキャッシュシステムを構築する

Varnish を使用する代わりに、独自の単純な (そしてばかげた) キャッシュ システムを構築できます。純粋な静的 HTML ページほど高速なものはありません。したがって、私が考えることができる (そして既に実装済みの) 最も単純な種類のキャッシュは、あなたのショップを定期的にクロールし、製品ページを静的な HTML ページとして保存する愚かな cronjob です。動的コンテンツ (再びカート ウィジェットなど) は、プレースホルダーに置き換える必要があります。

これで、これらの静的な HTML ページをクライアントに配信できます。クライアントは、静的であるため、ショップを非常に高速に閲覧しています。動的コンテンツは、システムへの AJAX 呼び出しを使用して、クライアント側 (ブラウザー) で置き換える必要があります。

ばかげていますが、シンプルで問題なく動作します-何千もの製品がない限り(クロールに時間がかかりすぎます)。

3. Magento を使用しない

冗談です... :) しかし、はい、Magento は遅くなる傾向があります。

また、Magento のパフォーマンスの最適化にも非常に役立ちます: The Magento Best Practice for Performance and Scalibilty Whitepaper。Enterprise Edition 用ですが、Commiunity Edition にも役立つヒントがいくつかあります。

于 2012-03-02T11:22:43.907 に答える
2

Magento のオープン ソースの全ページ キャッシュ

https://github.com/ezapps/Zoom-Magento-FPC

非常に高速に動作し、無料です。Magento コマースでは、ドメインごとに 500 ドルを請求する類似の拡張機能があります。

于 2012-03-30T09:44:45.677 に答える
0

識別 ID を入力する必要があると思います。これは、顧客が製品をカートに追加したときに変更されます

    protected function _construct()
{
$this->addData(array(
'cache_lifetime' => 3600,
'cache_tags'     => array(Mage_Catalog_Model_Product::CACHE_TAG),
'cache_key'      => $this->getProduct()->getId(),
));
}

製品を追加するときは、cache_key の値を変更する必要があります。試してみませんか??

于 2012-03-02T08:28:54.680 に答える
0

この質問 - magento オープン ソースのフル ページ キャッシュ- は、この分野で利用可能ないくつかの問題とモジュールを扱います。

完全なページ キャッシュでは、問題が発生する可能性が非常に高くなります。magento は製品をカートなどに追加する前にチェックを行いますが、ユーザーに表示する内容が間違っている可能性があります。これには、価格設定やその他の重要な領域が含まれる可能性があります。

于 2012-11-08T22:11:29.967 に答える