Форум больше не используется. Присоединяйтесь к каналу #community-ru в Slack for TYPO3 community |
|
|
Опции темы | Опции просмотра |
23.10.2012, 21:09 | #11 |
Guest
Сообщений: n/a
|
По прежнему актуально.
Самый простой "кэш" (не знаю можно ли это назвать кэшированием), который могу создать это следующий: есть собранные данные HTML-код - их записываю в файл с именем time(), кидаю его в папку typo3temp - и при следующем вызове скрипта, проверяю через if - если разница более 30 минут - то по новому нужно собрать HTML-код с запросом к БД. Какой и как использовать API typo3 для подобных вещей (как на файлах, так и на БД - хотя данный вариант мне тоже не очень нравиться). Есть ли простые примеры... Memcache - так понимаю должен быть включен (установлен) на сервера? И есть ли что нибудь - что похоже на Memcache - только в независимости от настроек и установок сервера? Последний раз редактировалось Ивано; 23.10.2012 в 21:22 |
23.10.2012, 21:29 | #12 |
Guest
Сообщений: n/a
|
Вот нашел ссылку на memcache - только на основе простой библиотеки...
http://raven.esiteq.com/2011/03/php-memcache/ |
23.10.2012, 21:35 | #13 |
Guest
Сообщений: n/a
|
Как понимаю - это расширение "fastcache" - позволяет решать подобные задачи?
|
24.10.2012, 12:15 | #14 |
Senior Member
|
Еще раз - можете использовать встроенные в ядро функции кэширования.
Подробно и с примерами (в конце) читайте http://wiki.typo3.org/Caching_framework То что вы сохраняете какой-то готовый контент в файл - это тоже кэширование. Точно также вместо файла можно использовать Memcached, APC и т.п. Может быть fastcache и упростит задачу. Но там и так просто get/set. Правда нужно понимать, что бы сделать из этого полноценный кэш нужно добавить к этому ряд функций. Например чистку кэша при общей команде "Clear Cache" из BE. Также при усложнении функциональности сайта/экста понадобиться тэггирование записей кэша и чистка по тэгам. сильно улучшает полезность кэша зависимость жизни кэша от изменения и добавления связанных записей. Например, вы отредактировали новость в BE, кэш плагина/страницы новости обновился сразу, а не через 30 минут. PS: Если вы записываете с именем time(), то как вы потом этот файл находите? Гораздо удобней использовать другие параметры для имени ключа кэша. Например у нас есть метод который реднерит Single View. В нем определяем $cache_key = md5(serialize(array(__CLASS__, __FUNCTION__, $pid, $uid))); Так у нас есть гарантия что ключ кэша (он же имя файла или ключ в memcached) не перепутается с кэшем из другой функции, или из другого класса. |
24.02.2013, 00:07 | #15 |
Senior Member
Регистрация: 18.01.2013
Адрес: Russia , Moscow
Сообщений: 796
|
Возвращаясь к этой теме - очень сложно использовать Caching F в выше описанной статье...
И нашел варианты более простые: 1. http://typo3.org/extension-manuals/e....0/view/toc/0/ расширение enetcache позволяет управлять кэшированием 2. http://buzz.typo3.org/people/steffen...in-extensions/ можно использовать стандартные функции класса t3lib_pageSelect: getHash storeHash которые пишут данные в таблицу "cf_cache_hash_tags" t3lib_pageSelect - очень полезный класс, документация здесь: http://doxygen.frozenkiwi.com/typo3/...13dfaf1a0da959 А также вот еще интересные статьи: http://wiki.typo3.org/Cache http://wiki.typo3.org/Functions_for_t3lib_cache |
24.02.2013, 00:30 | #16 |
Senior Member
Регистрация: 18.01.2013
Адрес: Russia , Moscow
Сообщений: 796
|
А еще можно на прямую, даже с выбором таблицы, в которую надо писать:
if(isset($GLOBALS['typo3CacheManager']) && $GLOBALS['TYPO3_CONF_VARS']['SYS']['useCachingFramework']) { //на всякий случай можно проверять, включено ли кэширование на основе БД (и если галочка установлена - вперед) PHP код:
PHP код:
Даже время истечения можно задать... |