EC-CUBE3でhttpキャッシュを有効にする方法
EC-CUBE Advent Calendar 2021 18日目の記事です。
元々ec-cube.coについて書くつもりでしたが、諸事情により別記事を掲載します。
EC-CUBE3では、パフォーマンスを上げるためにhttpキャッシュという機能が用意されています。
4系にはこちらの機能はありませんのでご注意ください。
こちらを有効にする事でレスポンスが良くなるのですが、httpキャッシュを有効にすると正常に会員登録がされないという不具合があります。それを回避するために以下の修正を行なってください。
index.phpの修正
- html/index.php
if ($app['config']['http_cache']['enabled']) { $app['http_cache']->run(); } else { $app->run(); }
と記載されている箇所を、
$url = parse_url($_SERVER['REQUEST_URI']); $cacheRoute = $app['config']['http_cache']['route']; if (in_array($url['path'], $cacheRoute) === true) { $app['http_cache']->run(); } else { $app->run(); }
に変更してください。
Application.phpの修正
- src/Eccube/Application.php
// フロント画面 $cacheRoute = $app['config']['http_cache']['route']; if (in_array($route, $cacheRoute) === true) {
と記載されている箇所を
// フロント画面 $cacheRoute = $app['config']['http_cache']['route']; $path = $request->getPathInfo(); if (in_array($path, $cacheRoute) === true) {
に変更してください。
http_cache.yml.distの修正
route名で記載されていた内容を実際のURLに変更します。
- src/Eccube/Resource/config/http_cache.yml.dist
http_cache: enabled: true age: 10 # フロントでキャッシュを適用させる画面のrouteを設定 route: - / - /products/list - /block/category - /block/news - /block/search_product - /help/about - /help/guide - /help/privacy - /help/tradelaw - /help/agreement
こちらは、app/config/eccube/http_cache.yml
に保存しても問題ありません。
以上の修正でhttpキャッシュが正常に動作するようになります。ただし、ドキュメントにも記載があるように
- Tokenを利用している画面にはhttpキャッシュを適用させない
という事は必ずお守りください。 もしパフォーマンスにお悩みの方はhttpキャッシュをお試しください。
ec-cube.coについての記事が気になる方はコメントしてください。個別に対応させていただきます。