![]()  | 
	Форум больше не используется. Присоединяйтесь к каналу #community-ru в Slack for TYPO3 community | 
| 
			
			 | 
		#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 или примеры? Заранее спасибо.  | 
| 
		 | 
	
	
	
		
		
		
		
			 
		
		
		
		
		
		
		
			
		
		
		
	 | 
| 
			
			 | 
		#2 | 
| 
			
			 Senior Member 
			
			
			
				
			
			
	 | 
	
	
	
		
		
			
			 
			
			Полгода назад искал решение этой задачи, спрашивал и в забугорном mail list - решения не нашел. Была мысль проследить путь которым страница кэшируется и сделать алгоритм для обратной операции. Но времени на это не было. 
		
		
		
		
		
		
		
	Пошел другим путем. На странице плагин вставлен как USER_INT, а внутри него выдача контента кэшируется в memcached, и очишается соответственно тоже через memcached. Мне кажется этот путь даже предпочтительней - вместо того, что бы в базе кэшировать 1000 вариантов одной и той же страницы но с разным "центральным" контентом, кэшируется страница один раз - а основной контент кэшируется отдельно. Место это занимает намного меньше, и работает быстрее.  | 
| 
		 | 
	
	
	
		
		
		
		
			 
		
		
		
		
		
		
		
			
		
		
		
	 | 
| 
			
			 | 
		#3 | 
| 
			
			 Senior Member 
			
			
			
				
			
			Регистрация: 21.04.2006 
				
				
				
					Сообщений: 245
				 
				
				
				
				
				 | 
	
	
	
		
		
			
			 
			
			Логика ясна. В моем случае так заморачиваться - сложно, т.к. на страницах несколько USER_INT элементов, причем на разных страницах - разные. Т.е. нет единого "центрального" контента. Хотя, возможно, имеет смысл. 
		
		
		
		
		
		
		
	Как определили, что ваш вариант быстрее? Ведь TYPO3 сначала все равно страницу берет из своего кеша. А только потом ваш модуль еще раз генерит свое содержание (кешированное). Можно ли где-нибудь посмотреть ваш модуль? Все таки интересно. По моему вопросу еще можно по идее посмотреть коды модуля clearcacheextend. Но поскольку нет уверенности в его правильности, поэтому решил сначала поинтересоваться у сообщества.  | 
| 
		 | 
	
	
	
		
		
		
		
			 
		
		
		
		
		
		
		
			
		
		
		
	 | 
| 
			
			 | 
		#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 код: 
	
			
	 | 
| 
		 | 
	
	
	
		
		
		
		
			 
		
		
		
		
		
		
		
			
		
		
		
	 | 
| 
			
			 | 
		#5 | 
| 
			
			 Senior Member 
			
			
			
				
			
			Регистрация: 21.04.2006 
				
				
				
					Сообщений: 245
				 
				
				
				
				
				 | 
	
	
	
		
		
			
			 
			
			Здорово, спасибо. 
		
		
		
		
		
		
		
	В принципе как с memcached работать понятно. Но больше интересовало как "перехватить" контент, который генерит TYPO3, чтобы его положить в кеш.  | 
| 
		 | 
	
	
	
		
		
		
		
			 
		
		
		
		
		
		
		
			
		
		
		
	 | 
| 
			
			 | 
		#6 | 
| 
			
			 Senior Member 
			
			
			
			Регистрация: 09.12.2007 
				
				
				
					Сообщений: 281
				 
				
				
				
				
				 | 
	
	
	
		
		
			
			 
			
			есть ttnewscache и ttnewscache_clearlike - для частичной чистки кеша при работе с tt_news. Возможно, пойдет как пример?
		 
		
		
		
		
		
		
		
	 | 
| 
		 | 
	
	
	
		
		
		
		
			 
		
		
		
		
		
		
		
			
		
		
		
	 | 
| 
			
			 | 
		#7 | 
| 
			
			 Senior Member 
			
			
			
			
	 | 
	
	
	
		
		
			
			 
			
			Для просмотра кеша конкретной страницы в зависимости от параметров пользуюсь плагином cachemgm (там много параметров кеша выводится) - можно попробовать доработать по типу просмотра индексированных страниц - добавить корзиночку для удаления конкретной записи.
		 
		
		
		
		
		
		
		
	 | 
| 
		 | 
	
	
	
		
		
		
		
			 
		
		
		
		
		
		
		
			
		
		
		
	 | 
| 
			
			 | 
		#8 | |
| 
			
			 Senior Member 
			
			
			
				
			
			
	 | 
	
	
	
		
		
			
			 Цитата: 
	
 Если я правильно уловил смысл их работы - в контент страницы добавляется опредленный блок HTML-комметариев, по которому в дальшейшем делается поиск соответсвующей записи в таблице кэша. Мне кажется это очень медленно.  | 
|
| 
		 | 
	
	
	
		
		
		
		
			 
		
		
		
		
		
		
		
			
		
		
		
	 | 
| 
			
			 | 
		#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 |