Magentoによる静的HTMLのキャッシュ(ビジネスおよびエンタープライズのみ)
Magentoを使用しているビジネスおよびエンタープライズの顧客は、Bypass Cache on Cookieページルールを使用して匿名のページビューをキャッシュできます。この設定により、リクエストごとに再生成する必要なく、Cloudflareエッジで静的HTMLがキャッシュされます。
Magento管理パネルにログインする前やショッピングカートに何かを追加する前に、ページビューは匿名化され、リクエストをキャッシュすることが可能で、Magentoはオリジンサーバーで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です。
- Cache EverythingはCloudflareに静的HTMLをキャッシュするよう指示します。
- Bypass Cache on Cookieルールが設定した条件に一致すると、CloudflareはHTMLをキャッシュしません(ただし、静的画像や他のファイルは引き続きキャッシュされます)。Magento 1またはMagento 2を使用しているかによって、異なるルールが必要です:
Magento 1 external_no_cache=.*|PHPSESSID=.*|adminhtml=.* Magento 2 admin=.*|PHPSESSID=.*|private_content_version=.*
- 最後に、Edge Cache TTLを設定すると、Cloudflareがオリジンからファイルを取得する前にキャッシュされたファイルを保持する最大期間が定義されます。長いEdge Cache TTL時間を設定した後でも、この時間が切れる前にキャッシュをクリアできます。

6. Save and Deployをクリックします。
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」に設定し、保存します。
