Форум больше не используется. Присоединяйтесь к каналу #community-ru в Slack for TYPO3 community |
01.10.2013, 10:54 | #31 | |
Senior Member
Регистрация: 18.01.2013
Адрес: Russia , Moscow
Сообщений: 796
|
Цитата:
Ищу тэги для memcache... Последний раз редактировалось Ивано++; 01.10.2013 в 11:04 |
|
01.10.2013, 15:33 | #32 |
Senior Member
|
В общем случае ключ в кэше должен учитывать все что у вас может повлиять на содержимое. Т.е. id страницы, текущий type, GET переменные, содержимое config и т.п. И еще место откуда вызывается.
Примерно так PHP код:
|
01.10.2013, 16:35 | #33 | ||
Senior Member
Регистрация: 18.01.2013
Адрес: Russia , Moscow
Сообщений: 796
|
Цитата:
1. вот человек ввел id=5005034 (у нас движок выдаст 404 - ошибку) - сам просчитает, т.к. такой страницы нет, и для type - тоже самое а вот если мы используем показ новостей к примеру по additionalparams для typolink - пример tx_news[id]=50 получается если человек от "себя" введет не верный id-записи, то у Вас запишется кэш +1 - которого в принципе не существует. И так до тех пор, пока он (злоумышленник-вредитель) не устанет вводить разные значения - одним словом так и сайт можно "завалить".... Получается как - каждый раз проверять на существоание такого ID, и если есть, то разрешаем писать кэш? Как проверить валидность id-записи? 2. вот мое наблюдение по работе ядра системы: если у нас запрашивается не верная страница по id, type - то typo3 в кэш ничего не пишет - здесь вродебы все ясно... но вот как она проверяет additionalparams, в т.ч. useCachHash - что это валидный url? Как я не старался - все равно она лишних кэшей никаких не пишет... Даже useCachHash = FALSE Цитата:
|
||
01.10.2013, 18:58 | #34 | |
Senior Member
|
С левыми id проблем не вижу.
Вы же делаете как: 1. Строите cache_key 2. Проверяете в кэше 3. Если нет, то делаете запрос в БД 4. Если нет записи - выдаете 404 5. Если есть в БД, формируете контент и пишете в кэш Логично что ответы 404 в кэш писать не нужно. Цитата:
|
|
02.10.2013, 00:03 | #35 | ||
Senior Member
Регистрация: 18.01.2013
Адрес: Russia , Moscow
Сообщений: 796
|
Цитата:
Возможно нашел решение - более простое - по поводу разрешить/запретить кэширование - но оно связанно с useCashHash - и не знаю насколько оно будет уместно ... И сейчас не совсем пойму - почему useCashHash так плох? Цитата:
PHP код:
|
||
02.10.2013, 01:08 | #36 |
Senior Member
Регистрация: 18.01.2013
Адрес: Russia , Moscow
Сообщений: 796
|
Это то, что так долго искал - наверное не 1-и месяц:
самое странное что в тему useCashHash valid - на оффициальном форуме typo3.org - мне ничего не ответили, вернее ответили, но как-то расплывчато было сказано - что это не возможно - и это ответ от Core...!!!... Странно что там, даже PHP-код вставить нет возможности.... Теперь из t3lib_div::cHashParams и t3lib_div::calculateCHash стало понятно, как можно проверить ... useCashHash - оказывается - это просто md5 - всех _GET-параметров.... PHP код:
Т.к. по тэгам хочется иметь что - то вроде Код HTML:
//[prefixProject][domainName][pageId/Alias][typeNum][L][useCashHash][commendId]... //[prefixProject][domainName][pageId/Alias][typeNum][L][useCashHash][newsId]... Пока как-то так. Последний раз редактировалось Ивано++; 02.10.2013 в 01:35 |
07.10.2013, 22:28 | #37 |
Senior Member
Регистрация: 18.01.2013
Адрес: Russia , Moscow
Сообщений: 796
|
Использую memcache - тэги можно хранить в БД.
|
03.12.2013, 11:12 | #38 |
Senior Member
Регистрация: 18.01.2013
Адрес: Russia , Moscow
Сообщений: 796
|
Немного по поводу сброса по тэгам...
Есть 1-страница - к примеру... На ней работают два плагина: Плагин А) - список новостей Плагин Б) - список статей Каждый из плагинов создает виртуальные страницы с useCachHash... И добавим такой сложный элемент как постраничная навигация для каждого из плагинов. При добавлении новости или статьи - нам же придется все равно сбрасывать весь кэш страницы с useCachHash - что бы заново пересчитать постраничную навигацию - или же делать так, что бы сбрасывался конкретный планиг - что думаю приведет в последствии к немалой путанице при поддержке проекта... |
06.12.2013, 13:49 | #39 |
Senior Member
|
Вот поэтому я всегда рекомендую встраивать кэширование внутрь плагина.
Потому что в таком случае может получиться следующая картина: 1000 записей (страниц) в одном плагине, 1000 в другом. В итоге в худшем случае имеем 1000х1000 = 1 000 000 записей в кэше. Если не живые люди, то роботы поисковиков сканируя все ссылки на сайте это обеспечат. При том что реально уникальной информации 1000 + 1000 = 2000 единиц. И столько же будет в кэше, если делать кэширование внутри плагина. |
06.12.2013, 21:23 | #40 | |
Senior Member
Регистрация: 18.01.2013
Адрес: Russia , Moscow
Сообщений: 796
|
Цитата:
1 страница - на ней два плагина: первый плагин генерирует 1000 виртуальных страниц через useCachHash генерирует 15 постраничных страниц (к примеру) typolink = index.php?id=95&tx_my_ext_1[record_detail]=1&useCachHash=1 typolink = index.php?id=95&tx_my_ext_1[pagination]=1&useCachHash=1 второй плагин генерирует 1000 виртуальных страниц через useCachHash генерирует 25 постраничных страниц (к примеру) typolink = index.php?id=95&tx_my_ext_2[record_detail]=1&useCachHash=1 typolink = index.php?id=95&tx_my_ext_2[pagination]=1&useCachHash=1 1000 + 15 + 1000 + 25 = 2035 виртуальных страниц, ну и + 1 страница, на которой эти плагины работают... откуда мильёон? |
|
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Cлишком сложно показалось? | carlos | Вопросы выбора CMS | 5 | 04.07.2007 16:37 |