概要
Magentoを利用しているBusinessプランのお客様とEnterpriseのお客様は、当社のBypass Cache on Cookieページルールで、匿名のページビューをキャッシュすることができます。この設定で、リクエストからリクエストへの再生成を必要としない、Cloudflare Edgeでの静的HTMLキャッシングができます。
Magento 管理パネルにログインする前、またはショッピングカートに何か追加する前に、ページビューが匿名化され、オリジンサーバーでMagentoがHTMLを継続的に再生成する必要がないように、リクエストをキャッシュすることが可能です。
Cloudflare Page Ruleで静的HTMLをキャッシュする
CloudflarePage Ruleを使って静的HTMLをキャッシュするには、
1. Cloudflareのアカウントにログインします。
2. キャッシング アプリをクリックします。
3.Browser Cache TTLまでスクロールダウンし、既存ヘッダーを尊重するを選択します。
この設定を実行すると、匿名のページ訪問者をキャッシュするために必要なPage Ruleが設定できます。
4. Page Ruleアプリをクリックします。
5. 「Page Ruleを作成」ボタンをクリックし、ドメインを入力します。以下に示す通り、ドメインは www.orangeclouded.comです。
- Cache Everything(すべてをキャッシュする)は、Cloudflareに静的HTMLをキャッシュするように指示します。
- Bypass Cache on Cookieルールが、当社が設定した基準を満たす場合、CloudflareはTHMLをキャッシュしません(しかし、静的画像とその他のファイルはキャッシュされます)。Magento1とMagento 2のどちらをご利用かによって、ルールが異なります。
Magento 1 | external_no_cache=.*|PHPSESSID=.*|adminhtml=.* |
Magento 2 | admin=.*|PHPSESSID=.*|private_content_version=.* |
- 最後に Edge Cache TTL を設定すると、オリジンからキャッシュ済みファイルが戻る前にCloudflareが保持できる最長期間を定義できます。長いEdge Cache TTL時間を設定しても、この時間が切れる前に手動でキャッシュをクリアすることができます。
6. 「保存と展開」をクリックします。
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は、Megentoフォーム全体で Cross Site Request Forgery チェック(CSRF) を導入しています。これはCookieを使用するため、匿名キャッシングメカニズムが問題を引き起こす可能性もあります。この問題の解決方法が三つあります。以下のセキュリティレベルに基づいて、オプションを紹介します。
1. 最も低いセキュリティ: システム -> 設定 -> システム -> CSRF 保護 -> Urlに秘密鍵を追加するの設定が、デフォルトで Yesとなっています。この設定を No にすると、Megentoフロントエンド全体でCSRFセキュリティプロテクションが無効となり、サイト上にCSRF保護をオンにできる別のメカニズムがあれば、このオプションだけが表示されます。ただし、この方法は推奨されません。システム -> ADMIN -> システム -> CSRF 保護 -> Urlに秘密鍵を追加するのAdminパネルに同様の名前設定があることに注意してください。この設定はYesに保ち、変更しないでください。この設定では、Adminエンドポイントにセキュリティを提供することになるため、使用には特別な注意が必要となります。
2. 中程度のセキュリティ: ユーザーが「カートに追加する」フォームでCSRFチェックのみを無効にできるようにする Magento コミュニティモジュールがセキュリティリスクの重大性がやや低いところに存在します。 Inovarti_FixAddToCartMage18 プラグインが CSRF 保護から「カートに追加する」をホワイトリストに設定してこれを行います。
3. 最も高いセキュリティ: MagentoサイトのCSRFトークン値を動的に埋めるためにAJAXを使うことが最良の方法です。ユーザーが何かをカートに加えるためにボタンをクリックすると、ユーザーのセッションと一致する形式でCSRFを更新するためにジャンプするJavaScriptもあります。これにより、ページのほとんどをキャッシュから提供することが可能になりますが、トークンを取得するためにオリジンに戻るリクエストが必要となります。
最終的なAJAXのメカニズムがMagento Turpentine 拡張機能と呼ばれるプラグインで実行されています。このプラグインはVarnishでキャッシュの実行ができるように構築されましたが、Cloudflareで使うこともできます。
インストールには、いくつかオプションがあります。
- TarballのパッケージをGitHubのダウンロードページからダウンロードし、インストールします。(これは、「Download as tar.gz」ボタンではないことに留意してください)そして、Magento 接続ダウンローダーまたはMagentoのmageコマンドを通して、インストールしてください。
- Magento接続を介して、拡張キーを使用してインストールします:
http://connect20.magentocommerce.com/community/Nexcessnet_Turpentine
- modmanをインストールします。必要となるものは、これだけです:
modman clone https://github.com/nexcess/magento-turpentine.git
プラグインをインストールしたら、システム (System) -> 設定 (Configration) -> TURPENTINE -> Varnish オプション (Varnish Option) の順に移動し、「Use VCL fix」オプションを検索し、「無効にする」に設定し、保存します。