Форум больше не используется. Присоединяйтесь к каналу #community-ru в Slack for TYPO3 community |
30.09.2008, 19:20 | #1 |
Senior Member
Регистрация: 21.04.2006
Сообщений: 245
|
очистка кеша для определенного урла
Добрый день!
Есть страница, для которой в кеше хранится много записей в зависимости от параметра. Например, для одной и той же страницы http://site.ru/news/ в кеше будут разные записи для ссылок http://site.ru/news/1/, http://site.ru/news/2/ и т.п. Таких ссылок могут быть тысячи. Если чистить кеш для всей страницы, то будут очищены все записи для данной страницы. Задача такая - надо очистить кеш для заданной записи, а для всех остальных оставить. Вроде бы можно посчитать hash ссылки, найти соответствующую запись в cache_pages и ее очистить. Но очистки cache_pages недостаточно. Как лучше сделать описанную задачу? Может есть API или примеры? Заранее спасибо. |
01.10.2008, 13:39 | #2 |
Senior Member
|
Полгода назад искал решение этой задачи, спрашивал и в забугорном mail list - решения не нашел. Была мысль проследить путь которым страница кэшируется и сделать алгоритм для обратной операции. Но времени на это не было.
Пошел другим путем. На странице плагин вставлен как USER_INT, а внутри него выдача контента кэшируется в memcached, и очишается соответственно тоже через memcached. Мне кажется этот путь даже предпочтительней - вместо того, что бы в базе кэшировать 1000 вариантов одной и той же страницы но с разным "центральным" контентом, кэшируется страница один раз - а основной контент кэшируется отдельно. Место это занимает намного меньше, и работает быстрее. |
01.10.2008, 15:16 | #3 |
Senior Member
Регистрация: 21.04.2006
Сообщений: 245
|
Логика ясна. В моем случае так заморачиваться - сложно, т.к. на страницах несколько USER_INT элементов, причем на разных страницах - разные. Т.е. нет единого "центрального" контента. Хотя, возможно, имеет смысл.
Как определили, что ваш вариант быстрее? Ведь TYPO3 сначала все равно страницу берет из своего кеша. А только потом ваш модуль еще раз генерит свое содержание (кешированное). Можно ли где-нибудь посмотреть ваш модуль? Все таки интересно. По моему вопросу еще можно по идее посмотреть коды модуля clearcacheextend. Но поскольку нет уверенности в его правильности, поэтому решил сначала поинтересоваться у сообщества. |
01.10.2008, 15:46 | #4 |
Senior Member
|
Оценка "быстрее" конечно чисто умозрительная. Так как испробовать 1-й вариант я не могу и соответственно сравнить тоже.
Но мои плюсы таковы: 1. Так как, например, в cache_pages храниться не 1000+ страниц (=1000*50 Кб), а только одна (= 50Кб), то выборка из такой таблицы будет быстрее. И таблица большая и в кэш mysql маловероятно попадет. В целом уменьшение размера cache_pages полезнее для всего сайта. 2. На сервере проц быстрый, поэтому накладные расходы на выполнение USER_INT с учетом php-акселераторов минимальны. 3. Положить/взять из memcached - это всего одна очень быстрая функция php. Ключ делается например путем md5(serialize($this->piVars)). Если надо привызываться к выводу single, то можно использовать $this->extKey.$recordID.'single'. И по этому же ключу чистить кэш при изменении записи в БД. Модуль закрытый - но все это очень даже просто: PHP код:
|
01.10.2008, 16:05 | #5 |
Senior Member
Регистрация: 21.04.2006
Сообщений: 245
|
Здорово, спасибо.
В принципе как с memcached работать понятно. Но больше интересовало как "перехватить" контент, который генерит TYPO3, чтобы его положить в кеш. |
01.10.2008, 22:53 | #6 |
Senior Member
Регистрация: 09.12.2007
Сообщений: 281
|
есть ttnewscache и ttnewscache_clearlike - для частичной чистки кеша при работе с tt_news. Возможно, пойдет как пример?
|
02.10.2008, 09:42 | #7 |
Senior Member
|
Для просмотра кеша конкретной страницы в зависимости от параметров пользуюсь плагином cachemgm (там много параметров кеша выводится) - можно попробовать доработать по типу просмотра индексированных страниц - добавить корзиночку для удаления конкретной записи.
|
03.10.2008, 16:46 | #8 | |
Senior Member
|
Цитата:
Если я правильно уловил смысл их работы - в контент страницы добавляется опредленный блок HTML-комметариев, по которому в дальшейшем делается поиск соответсвующей записи в таблице кэша. Мне кажется это очень медленно. |
|
03.10.2008, 16:57 | #9 | |
Senior Member
|
Цитата:
PHP код:
Соответственно тут можно перехватить и либо отдать из кэша, либо пойти по пути генерации как обычно. |
|
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Требуются разработчики (или компании) для долгосрочного сотрудничества. | alex v | Работа и заказы / Job Offer and Request | 0 | 30.07.2008 15:32 |
Очистка кеша при добавлении элемента контента из FE | Nikolay | Разработка расширений / TYPO3 extension development | 2 | 09.07.2008 14:56 |
Что использовать для простого каталога? | cronfy | Магазины и каталоги для TYPO3 | 4 | 23.05.2008 12:36 |
TS-код для размеченой области TV | Andrey Grey | TypoScript практикум | 4 | 20.02.2008 21:01 |
Статистика для посетителей сайта | thebat | TYPO3: SEO и статистика посещений | 9 | 15.12.2007 19:59 |