コンテンツにスキップ

Magentoによる静的HTMLのキャッシュ(ビジネスおよびエンタープライズのみ)

概要

Magentoを使用しているビジネスおよびエンタープライズの顧客は、Bypass Cache on Cookieページルールを使用して匿名のページビューをキャッシュできます。この設定により、リクエストごとに再生成する必要なく、Cloudflareエッジで静的HTMLがキャッシュされます。

Magento管理パネルにログインする前やショッピングカートに何かを追加する前に、ページビューは匿名化され、リクエストをキャッシュすることが可能で、MagentoはオリジンサーバーでHTMLを常に再生成する必要がなくなります。


Cloudflareページルールを使用して静的HTMLをキャッシュする

Cloudflareページルールを使用して静的HTMLをキャッシュするには:

1. Cloudflareアカウントにログインします。

2. Cachingアプリをクリックします。

3. Browser Cache TTLオプションまでスクロールし、Respect Existing Headersを選択します。

この設定を行うことで、匿名のページ訪問をキャッシュするために必要なページルールを設定できます。

4. Rules > Page Rulesに移動します。

5. Create Page Ruleボタンをクリックし、ドメインを入力します。以下の例では、ドメインはwww.orangeclouded.comです。

Magento 1    external_no_cache=.*|PHPSESSID=.*|adminhtml=.* Magento 2    admin=.*|PHPSESSID=.*|private_content_version=.*

  • 最後に、Edge Cache TTLを設定すると、Cloudflareがオリジンからファイルを取得する前にキャッシュされたファイルを保持する最大期間が定義されます。長いEdge Cache TTL時間を設定した後でも、この時間が切れる前にキャッシュをクリアできます。

静的HTMLをキャッシュするようCloudflareに指示する設定を持つページルール作成ダイアログ、静的画像や他のファイルは引き続きキャッシュされる一方でHTMLをキャッシュしないようCloudflareに指示するBypass Cache on cookieルール、Edge Cache TTLが1ヶ月に設定されている。

6. Save and Deployをクリックします。


Magento 1.8.xまたは1.9.xでの問題のトラブルシューティング

Magento 1.8.xサイトまたは1.9.xサイトでBypass Cache on Cookieを設定した場合、ユーザーがショッピングカートにアイテムを追加しようとした最初の試みで「カートに追加」機能が動作しないことに気付くかもしれません。

Magento 1.8.xおよび1.9.xでは、すべてのMagentoフォームに対してクロスサイトリクエストフォージェリチェック(CSRF)が導入されました。これがCookieを使用するため、匿名キャッシュメカニズムが問題を引き起こす可能性があります。この問題を解決する方法は3つあります。以下にセキュリティレベルに基づいてオプションをリストしました。

1. 最も安全でない:System -> Configuration -> System -> CSRF protection -> Add Secret Key To Urlの設定がデフォルトでYesに設定されています。これをNoに設定すると、Magentoフロントエンド全体のCSRFセキュリティ保護が無効になります。このオプションは、サイトでCSRF保護のための別のメカニズムが有効になっている場合にのみ使用すべきであり、このアプローチは推奨しません。管理パネルにはSystem -> ADMIN -> System -> CSRF protection -> Add Secret Key To Urlという同様の名前の設定があります。この設定はYesのままにし、変更しないでください。この設定は管理エンドポイントにセキュリティを提供するため、特に注意が必要です。

2. やや安全:Magentoコミュニティモジュールが存在し、ユーザーが「カートに追加」フォームでのみCSRFチェックを無効にできるようにします。ここではセキュリティリスクがそれほど重要ではありません。 Inovarti_FixAddToCartMage18プラグインは、CSRF保護から「カートに追加」機能を許可することでこれを実現します。

3. 最も安全:最良の代替手段は、AJAXを使用してMagentoサイト内のCSRFトークンの値を動的に埋め込むことです。ユーザーがカートに何かを追加するボタンをクリックすると、JavaScriptが介入してフォーム内のCSRFトークンをユーザーのセッションに一致させるように更新します。これにより、ページのほとんどがキャッシュから提供されることが可能になりますが、トークンを取得するためにオリジンへのリクエストが必要になります。

この最終的なAJAXメカニズムは、Magento Turpentine拡張機能というプラグインで実装されています。このプラグインはVarnishでのキャッシングのために構築されましたが、Cloudflareでも使用できます。

これをインストールするためのいくつかのオプションがあります:

  • GitHubのダウンロードページからtarballパッケージをダウンロードしてインストールします(「Download as tar.gz」ボタンではないことに注意)し、Magento Connect DownloaderまたはMagentoのmageコマンドを通じてインストールします。
  • 拡張機能キーを使用してインストールします:http://connect20.magentocommerce.com/community/Nexcessnet_Turpentine
  • modman clone https://github.com/nexcess/magento-turpentine.gitを使用してインストールします。

プラグインをインストールした後、System -> Configuration -> TURPENTINE -> Varnish Optionsに移動し、「Use VCL fix」オプションを見つけて「Disable」に設定し、保存します。

Use VCL fixオプションがDisableに設定されている。


関連リソース