0 Пользователей и 1 Гость просматривают эту тему.
  • 4 Ответов
  • 2180 Просмотров
*

Rivvil

  • Осваиваюсь на форуме
  • 12
  • 1 / 0
Всем привет.
Уже не первый раз при написании модулей с динамическим содержимым сталкиваюсь с проблемой. При отключенном кэше все работает нормально, при включении в глобальных настройках Стандартного кэша начинаются странные вещи.
Модули просты до безобразия. К примеру, последним делал модуль для отображения результатов гуглевского поиска. То есть все, что делает модуль - вставляет на страницу div, в который уже потом через JS (скрипты я встраиваю через $document->addScriptDeclaration) с Google подгружаются данные. При включении кэша первый поисковый запрос обрабатывается нормально. При следующем же запросе, судя по всему, никакие скрипты не выполняются, из Google ничего не приходит. На странице остается "голый" div.
В настройках модуля присутствуют параметры управления кэшем:
Код
<field
name="cache"
type="list"
default="1"
label="COM_MODULES_FIELD_CACHING_LABEL"
description="COM_MODULES_FIELD_CACHING_DESC">
<option value="1">JGLOBAL_USE_GLOBAL</option>
<option value="0">COM_MODULES_FIELD_VALUE_NOCACHING</option>
</field>
<field
name="cache_time"
type="text"
default="900"
label="COM_MODULES_FIELD_CACHE_TIME_LABEL"
description="COM_MODULES_FIELD_CACHE_TIME_DESC" />
Однако выключение кэша через эти параметры не дает никакого положительного эффекта.
Самое простое, что приходит на ум в данном случае - как-то программно запретить кешировать мой модуль (все равно данные всякий раз будут на лету генерироваться). Но как это сделать?
Сомнения внушает то, что не выполняются клиентские скрипты, которые даже при включенном кэше находятся на странице.
Может, я вообще не понимаю проблемы?
*

co11ter

  • Захожу иногда
  • 151
  • 8 / 0
Re: Проблемы с кэшированием модулей
« Ответ #1 : 03.03.2012, 15:12:41 »
версия Joomla?

Для Joomla 1.5 в XML файл модуля вставляем
Код
<param name="cache" type="list" default="1" label="Caching" description="Select whether to cache the content of this module">
<option value="1">Use global</option>
<option value="0">No caching</option>
</param>
В настройках модуля отключаем кэширование
« Последнее редактирование: 03.03.2012, 15:18:46 от co11ter »
*

Rivvil

  • Осваиваюсь на форуме
  • 12
  • 1 / 0
Re: Проблемы с кэшированием модулей
« Ответ #2 : 03.03.2012, 15:39:43 »
версия Joomla?
Извиняюсь, совсем забыл. Joomla 1.7.3
Для Joomla 1.5 в XML файл модуля вставляем
У меня в XML-файле уже прописана подобная конструкция (только для соответствующей версии Joomla).
В настройках модуля отключаем кэширование
Это я уже пробовал, отключение кэша в настройках модуля проблем не решает.
Модули работают нормально только при отключении кэша в глобальных настройках.
*

genetics

  • Захожу иногда
  • 51
  • 5 / 0
  • «GeneticsPro»
Re: Проблемы с кэшированием модулей
« Ответ #3 : 10.05.2013, 15:59:45 »
Rivvil. Вы решили эту проблему?
Если да, то поделитесь как...
*

artlux

  • Захожу иногда
  • 466
  • 58 / 0
Re: Проблемы с кэшированием модулей
« Ответ #4 : 12.05.2013, 19:34:59 »
Если входные параметры получаете из jrequest например, то приходится сразу отключать кеш в модуле... Joomla 2.5

я например делаю так
Код
<field name="cache" type="hidden"
default="0"
label="COM_MODULES_FIELD_CACHING_LABEL"
description="COM_MODULES_FIELD_CACHING_DESC"
>
<option value="0">JNO</option>
<option value="1">JYES</option>
</field>

далее добавляем параметр кеша свой

Код
<field name="cached" type="list"
default="1"
label="COM_MODULES_FIELD_CACHING_LABEL"
description="COM_MODULES_FIELD_CACHING_DESC"
>
<option value="0">JNO</option>
<option value="1">JYES</option>
</field>

далее в модуле формируем нужный нам ключ кеширования после получения параметров и переменных c jrequest

Код
$cached = $params->get( 'cached', 1 );
$key = 'mod_mymodule.'.$var1.'.'.$var2.'.'.$var3.'.'.$var4; //и т.п. - это ключ кеширования
$cache = JFactory::getCache('mod_mymodule', 'output'); //папка для кеша + группа кеша (группу можно не указывать)
if($cached==1){
$cache->setCaching(1);
}

Код
if (!($output = $cache->get($key))) { //если кеша нет
ob_start();
/* грузим шаблон */
require(JModuleHelper::getLayoutPath('mod_mymodule',$layout));
$output = ob_get_clean();
$cache->store($output, $key);
}
echo $output; //вывод если кеш есть


Цитировать
Самое простое, что приходит на ум в данном случае - как-то программно запретить кешировать мой модуль
тут скорее не в модуле проблемы, а в компонентах или плагинах которые вы используете вместе с модулем
либо получаете данные прямо в шалоне а не во входном файле модуля (как предположение JModuleHelper::getLayoutPath - возможно кеширует данные дополнительно, ну это предположение и ничего больше)...

Поделился с тем, чем сталкивался при разработке модулей. Возможно кому-то поможет
« Последнее редактирование: 13.05.2013, 05:37:20 от artlux »
Разработка расширений: Joomla 1.5+, Bitrix 12+, Мобильные приложения для сайтов под Android (PhoneGap).
Для бонусов: Z136221252622, R242724126443, U423945028202. +79211696184(Мегафон), или плюсик в репу!
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Нумерация модулей

Автор fiter

Ответов: 1
Просмотров: 820
Последний ответ 15.07.2014, 02:05:53
от fiter
Получить количество активных модулей в определенной позиции

Автор zemelea

Ответов: 2
Просмотров: 1261
Последний ответ 18.02.2014, 11:13:05
от Aleks.Denezh
параметры в XML модулей

Автор ht1515

Ответов: 6
Просмотров: 3439
Последний ответ 11.02.2013, 19:41:00
от v-idea
Где находится php скрипт формирования модулей <jdoc:include type="modules" name="menu" style="xhtml

Автор ladan

Ответов: 6
Просмотров: 3376
Последний ответ 10.12.2012, 12:55:10
от ladan
Предложение разработчикам модулей включать параметр выбора layout'а модуля

Автор danik.html

Ответов: 8
Просмотров: 13243
Последний ответ 01.11.2011, 18:44:19
от smart