twigキャッシュの挙動について
- Dominant language
- PHP
- Stars
- 788
- Forks
- 719
- Avg merge
- 4d 4h
- Merged PRs (30d)
- 39
Description
3.0.8まで、twigファイルに変更があってもキャッシュがあれば優先して読まれ、表示は更新されない
3.0.9から、twigファイルに変更がある場合、キャッシュが更新される
のように挙動が変わっている。
原因としては、テンプレートフックポイントが追加されたことによる影響。
https://github.com/EC-CUBE/ec-cube/blob/master/src/Eccube/Application/ApplicationTrait.php#L253
プラグインからtwigファイルに介入するため、内部的にはTwig_Loader_FileSystemからTwig_Loader_Arrayを使うようになっている。
Twig_Loader_Arrayでは、twigのソースコードをhash化したものをキーとしてキャッシュが生成されるため、上記のような挙動になる。
問題点としては、プラグインで介入する際に、twigの変数を渡さずに動的な値を埋め込んだりすると、キャッシュが効かなくなるため、周知が必要。
例:以下の様なコード
``` php
$day = date('yyyy-mm-dd H:i:s');
$snipet = '
$search = '
$event->setSource($source);
```
また、毎回キャッシュの更新チェックが行われるため、Twig_Loader_FileSystemよりも性能面で劣ると思われる。
http://twig.sensiolabs.org/doc/api.html#twig-loader-array
フックポイントが使われていない場合は、従来通り$twig->render()するなど、制御が必要。
Contributor guide
Assessment
This issue has not been assessed yet.