EC-CUBE / EC-CUBE/ec-cube

twigキャッシュの挙動について

Open
#1,714 1 comment 0 reactions 0 assignees View on GitHub
document
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 = '

’. $day . ‘
';
$search = '
getSource());
$event->setSource($source);
```

また、毎回キャッシュの更新チェックが行われるため、Twig_Loader_FileSystemよりも性能面で劣ると思われる。
http://twig.sensiolabs.org/doc/api.html#twig-loader-array

フックポイントが使われていない場合は、従来通り$twig->render()するなど、制御が必要。

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.