Labo

EC-CUBE3 分室

【3.0.11】EC-CUBE3 のキャッシュについて

2016年10月16日 / 投稿者名:chiharu


ちらほらと公開に至らないプラグインもどき作成して実験を繰り返している今日この頃です。
そんな中 EC-CUBE3 の業務を新しく担当した者から相談された事を「EC-CUBE3 分室」にも記載したいと思います。
 
相談内容としては「出力内容を変更したのに更新されない・・・」というものでした。
まぁ、実施の話はそんなに大きな話ではなく、結論から云うと「キャッシュ」の問題です。
症状としては EC-CUBE 2系の時にも時々発生していた内容ですね。
 
EC-CUBE 2系の場合は Smaty によるキャッシャとなっており、変更したファイルの最終更新日時を見ていました。
つまり、最終更新日が以前のファイルを使用した時に反映しないという問題がありました。
 #公開内容に問題が発生して急いでバックアップから復元した時など、焦っている時に困った覚えがあります(笑)
 
今回、EC-CUBE 3系では Smaty ではなく twig を使用していますが、その際のキャッシュ周りについて記載します。
まず、大前提として EC-CUBE 2系 の Smarty をとは異なり、 3系 の場合、twig を使用しています。
twig は Symfony をベースとして、より簡易的に Symfony の機能を使用するためのテンプレートエンジンです。
そして、Symfony は仕様上 debug モードを明示的に設定しておかないとキャッシュの更新はされないとのことです。
・・・この点は注意が必要ですね。
 
 
さて、まずは簡単な対処療法からです。
とりあえずプログラムに間違いが無いのに表示内容が反映されない場合、大体はキャッシュが聞いているからです。
その場合は以下のフォルダの内容を消してしまえば何とかなります(笑)
 <インストールフォルダ>/cache/eccube/twig/production/
 
上記フォルダの内容はフォルダ名を見てもわかる通り、twig のキャッシュ情報が存在します。
対象のファイルが特定できるのであれば詳細ファイルを探して該当のものだけを削除することもできるかもしれません。
ですが、何か理由があるので無ければそのまま消して良いのではないでしょうか。
 
ちなみに、管理画面の「コンテンツ管理 > キャッシュ管理」でも同等のことが出来そうです。
 #管理画面のキャッシュ管理は 3.0.8 で実装されたようです。
 
まぁ、どのような方法をとるにしても本番サイトに何か修正を加えた場合はキャッシュクリアを忘れずに行う必要がありあそうです。
 
 
次に、開発向け環境にて作成を行う方法です。
とは云ってもそれほど難しい内容ではありません。
アクセスするURLを変更するだけのため、2系の様に設定を変更する必要も無い様です。
 
通常のサイトにを表示する際に以下の URL で表示しているかと思います。
 http://<インストールフォルダ>/
 
これを以下のような URL にて表示します。
 http://<インストールフォルダ>/index_dev.php
 
たったこれだけでデバグモードでの表示となります。
この場合にはキャッシュの影響を受ける事が無く、そのままの表示が行われるとのことです。
 
ただし、セキュリティの問題でインストール直後にデバグモードで起動しても、以下の一文が表示される形になります。

You are not allowed to access this file. Check index_dev.php for more information.

そのため、以下のファイルに対して アクセス元IP を追記する必要があるようです。
 /html/index_dev.php

$allow = array(
    '127.0.0.1',
    'fe80::1',
    '::1',
);

 ↑ から ↓ へ

$allow = array(
    'アクセス元IP',
    '127.0.0.1',
    'fe80::1',
    '::1',
);

 
ちなみにデバグモードの場合、画面下部にいろんなデバグ用のメニューが表示されます。
今はあまり使用していませんが、使用したSQLの一覧が表示されるなどの機能もあります。
そのうちこの機能についても説明できればいいなと思います・・・
 
とは云え、当面は表向きの内容を確認して行く必要があります。
次はテンプレートの変更方法を調査していければなぁ、と云うところですね。
ということで今回は以上です。
 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

* Copy This Password *

* Type Or Paste Password Here *

*

コメント欄にコードを挿入したい場合は、[php][/php] を使ってください。