Ronaldo Perez Posted September 13, 2012 Share Posted September 13, 2012 (edited) пишу эту тему в частности для того чтобы не повторять одно и тоже тысячу раз, а давать ссылку Все мы знаем, что при редактировании шаблона, для того чтобы увидеть текущие изменения в магазине на фронтенде, необходимо на вкладке Preferences - Perfomance в разделе Smarty установить опции Force Compile - Yes Cache - No Ну знаем и знаем, я и сам как попугай эту мантру повторяю каждый раз, но меня всегда смущало, что директория /tools/smarty/compile/ "заполняется файлами", а /tools/smarty/cache/ нет (кроме отдельных случаев, о них ниже), и вот вчера из-за одного проекта я таки изучил этот вопрос и сделал выводы во-первых заглянул в конфиг смарти, а там $smarty->caching = false; o_O во-вторых сразу выводы чтобы не мусолить: кэширование смарти для общих страниц (товары, категории ит.д.) в Престашоп не используется. Используется для отдельных модулей аля blockcategories (на престалаб была статья-перевод по поводу кэширования модулей, я увы не изучил тему на тот момент) опцию Cache в настройках Смарти в админке нефиг дергать, она не работает, не понимаю почему ее не закаментили давно. принудительное активирование кэша в конфигах, приводит к печальке, темплейты кэшируются не персонифицировано, выглядит это как "один и тот же товар для любой страницы товара" предположительно можно реализовать кэширование самостоятельно, передавая $cache_id в $smarty->display вторым параметром, я сделал эксперимент с категориями, получилось, но видны баги в тайтлах.. корчое предполагаю что сделать можно, просто реализация, валидация ит.д. ложится на вас выводов по быстродействию нет, предполагаю что на фоне использования других уровней кэширования - ситуация сглаживается Такое, ни о чем, но может кому-то пригодится) P.S. изменил название на более понятное Edited September 13, 2012 by SergeyH (see edit history) 1 Link to comment Share on other sites More sharing options...
tihon Posted September 13, 2012 Share Posted September 13, 2012 Тема, объявленная в заголовке, не совсем раскрыта. Почему иногда приходится вручную чистить Tools/Smarty/Compile? Ждем дальнейших откровений. И кстати, вопрос эффективности файлового кэширования (memcache) для Престы не обсуждался толком. Link to comment Share on other sites More sharing options...
Ronaldo Perez Posted September 13, 2012 Author Share Posted September 13, 2012 про откровения - это сарказм такой?) - memcache - кэширование в ОЗУ (если под файловым вы имели ввиду сохранение на диск), оно ничем не отличается особо для престы или других скриптов. - почему приходится чистить вручную конкретно в в вашем случае сказать не могу, да сам часто так делаю, когда надо быстро разово очистить и директория открыта под рукой + помню иногда и правда были затыки в старых версиях, но проблему не локализовал, то весервер чинил то еще что, да и не стояло такой задачи. - плюс если покурить доки, то можно найти $compile_checkUpon each invocation of the PHP application, Smarty tests to see if the current template has changed (different timestamp) since the last time it was compiled. If it has changed, it recompiles that template. вполне здоровая альтернатива force compile, сегодня опробую работает ли оно, т.к. многие создатели шаблонов с не очень прямыми руками произрастающими из околопаховых областей, умудряются клепать из таким образом что при включении компиляции престашоп просто перестает отзываться. 1 Link to comment Share on other sites More sharing options...
sors Posted September 14, 2012 Share Posted September 14, 2012 Опция Cache работает для тех модулей, в которых предусмотрено кэширование. Например блок категорий или верхнее горизонтальное меню. $smartyCacheId = 'идентификатор кэша, например ид языка'; $smarty->cache_lifetime = 31536000; // кэширование на год //Тут включается кэширование Tools::enableCache(); //Проверяется есть ли в кэше страница if (!$this->isCached('шаблон.tpl', $smartyCacheId)) { //Тут присвоение переменных } //Обработка шаблона $display = $this->display(__FILE__, 'шаблон.tpl', $smartyCacheId); //Восстанавливаются настройки кэширования как были (отключается кэширование) Tools::restoreCacheSettings(); 1 Link to comment Share on other sites More sharing options...
Ronaldo Perez Posted September 14, 2012 Author Share Posted September 14, 2012 Опция Cache работает для тех модулей, в которых предусмотрено кэширование. Например блок категорий или верхнее горизонтальное меню. Tools::enableCache(); Tools::restoreCacheSettings(); да, я видел, вопрос в том что кэшируетя оно "насильно" и сбросить кэш модулей переключателем в бэкофисе нельзя Link to comment Share on other sites More sharing options...
sors Posted September 14, 2012 Share Posted September 14, 2012 Сбросить нельзя, можно отключить. В этом случае функция enableCache ничего не делает. Link to comment Share on other sites More sharing options...
Ronaldo Perez Posted September 14, 2012 Author Share Posted September 14, 2012 (edited) Сбросить нельзя, можно отключить. В этом случае функция enableCache ничего не делает. угу, заглянул, а там if (!Configuration::get('PS_SMARTY_CACHE')) return; вопрос "почему опцию не закаментили" снимается Edited September 14, 2012 by SergeyH (see edit history) Link to comment Share on other sites More sharing options...
Recommended Posts