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

Gerostrat

  • Захожу иногда
  • 374
  • 2 / 0
  • Свидетель чайной ложки
Правильное кеширование
« : 23.08.2017, 12:55:44 »
Приветствую!
Из-за увеличения нагрузки на сервер было принято решение немного его снизить, настроив кеширование. Но есть несколько проблем, связанных с тем, что контент на сайте динамический и меняется в зависимости от страны посетителя. Реализовано это через модуль Metamod, который позволяет показывать разные модули в зависимости от ip адреса (отбор по стране идёт, база ip отсюда
Спойлер
[свернуть]
). Например, сейчас подгружать виджет группы ВК для посетителей из Украины нет смысла, поэтому вместо него показывается что-то другое. То же относится и к рекламе Яндекса - вместо неё для посетителей из Украины показывает рекламу другой сети.
Кроме того, что работают обычные модули, которые выводятся на модульных местах, так модули ещё подгружаются в шаблоне материала.
Почитал о видах кеширования джумлы, но так и не пришёл к какому-то решению. Прошу совета, как лучше всего настроить кеширование, чтобы отдавался правильный контент, и кешировалось только то, что нужно :-)
« Последнее редактирование: 23.08.2017, 13:12:30 от Gerostrat »
*

ChaosHead

  • Гуру
  • 5241
  • 451 / 13
Re: Правильное кеширование
« Ответ #1 : 23.08.2017, 13:24:58 »
Можно включить стандартное кэширование, а плагин система кэш, который кэширует страницу целиком не включать. Затем в модулях, которые выводят разную инфу отключить кэширование в настройках модуля (поставить 0 секунд).
Если встроенного функционала не хватит, то можно посмотреть компонент https://extensions.joomla.org/extension/jotcache/
*

Gerostrat

  • Захожу иногда
  • 374
  • 2 / 0
  • Свидетель чайной ложки
Re: Правильное кеширование
« Ответ #2 : 23.08.2017, 13:57:22 »
Спасибо, значит я думаю в правильном направлении.
А как Вы думаете, будут ли в таком случае кешироваться следующие моменты:

1. В шаблоне материала (файл лежит /host.ru/templates/../layouts/com_content/article/default.php) подгружается рекламный код методом

Код
function addContent11($addTo, $add, $cntRep, $after = '</p>', $openTag = '<div class="111" style="width: 100%; margin-bottom: 15px;">', $closeTag = '</div>'){
    $posAfter = 0;
    for ($i=0; $i < $cntRep; $i++) {
        $pos = stripos($addTo, $after, $posAfter);
        $posAfter = $pos+strlen($after);
        if($pos===FALSE){
            return $addTo;
        }
    }
    $beforeAdding = substr($addTo, 0, $posAfter);
    $afterAdding = substr($addTo, $posAfter);
    $result = $beforeAdding . $openTag . $add . $closeTag . $afterAdding;
    return $result;
}

$this->item->text = addContent11($this->item->text,'<script async="" src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js" type="text/javascript"></script>
<!-- Mobile middle --><ins class="adsbygoogle" style="display: block;" data-ad-client="" data-ad-slot="" data-ad-format="auto"></ins>
<script type="text/javascript">
// <![CDATA[
(adsbygoogle = window.adsbygoogle || []).push({});
// ]]>
</script>',6);

Т.е. код подгружается после 6 закрывающего тега </p>.

2. В файле /components/com_content/views/article/view.html.php
Реализован вывод рекламы в месте между интротекстом и основным следующим образом:

Код
jimport( 'joomla.application.module.helper' ); // подключаем требуемый класс
$module = JModuleHelper::getModules('pos-sss'); // заполняем массив модулями, опубликованными в позиции position-748
$attribs['style'] = 'none'; // указываем стиль вывода модуля none (так как при использовании стиля xhtml наблюдается дублирование заголовков модуля)
$fff = JModuleHelper::renderModule($module[0], $attribs); // выводим первый модуль из заданной позиции

if ($item->params->get('show_intro', '1')=='1') {
$item->text = $item->introtext.' '.$fff .' '.$item->fulltext;
*

Gerostrat

  • Захожу иногда
  • 374
  • 2 / 0
  • Свидетель чайной ложки
Re: Правильное кеширование
« Ответ #3 : 23.08.2017, 14:05:34 »
Также скажу, может эта информация пригодится:
1. На сайте около 3 500 страниц.
2. Посещаемость от 30 000 до 80 000 в сутки, в зависимости от сезона.
*

ChaosHead

  • Гуру
  • 5241
  • 451 / 13
Re: Правильное кеширование
« Ответ #4 : 23.08.2017, 14:08:34 »
Будут, раз вы так внедрили. Можно перенести в плагин.
*

Gerostrat

  • Захожу иногда
  • 374
  • 2 / 0
  • Свидетель чайной ложки
Re: Правильное кеширование
« Ответ #5 : 23.08.2017, 14:10:04 »
Не понял, что Вы имеете в виду под "перенести в плагин"?
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Как принудительно отключить кеширование CSS и JS?

Автор Rorschach

Ответов: 14
Просмотров: 4682
Последний ответ 11.05.2016, 17:08:14
от Rorschach
Кеширование.

Автор Chetokakto

Ответов: 18
Просмотров: 7183
Последний ответ 13.03.2015, 18:11:15
от borro
Как отключить кеширование 1 го материала в jotcache?

Автор bandanu

Ответов: 1
Просмотров: 1455
Последний ответ 02.02.2014, 17:41:59
от bandanu
Включил сжатие gzip и кеширование выключился сайт

Автор htc_storm

Ответов: 2
Просмотров: 1373
Последний ответ 17.03.2013, 17:45:19
от hausedark
[Решено] Включается кеширование - отключаются RSS

Автор Schaltai

Ответов: 4
Просмотров: 1344
Последний ответ 04.12.2012, 11:14:59
от Schaltai