diff --git a/src/Symfony/Components/Templating/Loader/CacheLoader.php b/src/Symfony/Components/Templating/Loader/CacheLoader.php index dd282e7b4cb0..1d25de0d7bdf 100644 --- a/src/Symfony/Components/Templating/Loader/CacheLoader.php +++ b/src/Symfony/Components/Templating/Loader/CacheLoader.php @@ -41,11 +41,6 @@ public function __construct(Loader $loader, $dir) $this->loader = $loader; $this->dir = $dir; - if (!file_exists($dir)) - { - mkdir($dir, 0777, true); - } - parent::__construct(); } @@ -61,7 +56,10 @@ public function load($template, array $options = array()) { $options = $this->mergeDefaultOptions($options); - $path = $this->dir.DIRECTORY_SEPARATOR.md5($template.serialize($options)).'.tpl'; + $tmp = md5($template.serialize($options)).'.tpl'; + $dir = $this->dir.DIRECTORY_SEPARATOR.substr($tmp, 0, 2); + $file = substr($tmp, 2); + $path = $dir.DIRECTORY_SEPARATOR.$file; if ($this->loader instanceof CompilableLoaderInterface) { @@ -90,6 +88,11 @@ public function load($template, array $options = array()) $content = $this->loader->compile($content); } + if (!file_exists($dir)) + { + mkdir($dir, 0777, true); + } + file_put_contents($path, $content); if (null !== $this->debugger)