Русский English Deutsch Українська Қазақша

Next Generation CMS :: Форум поддержки

Заинтересовала наша система? Тогда этот форум для Вас!

Вы не вошли.

#1 2008-10-31 22:10:23

vitaly
Администратор
Откуда: Россия
Здесь с 2008-10-08
Сообщений: 2,788
Рейтинг :   115 

FYI: Использование механизма кеширования

(FYI) А знаете ли вы, что:
Многие новые плагины поддерживают кеширования своего вывода.
Данный механизм позволяет значительно уменьшить нагрузку на сервер БД (в некоторых случаях кол-во SQL запросов может быть уменьшено вдвое).


Как это работает:
1. Плагин проверяет наличие в кеше данных, которые лежат в кеше не более периода обновления кеша (конфигурационный параметр). Если данные найдены - плагин выводит данные из кеша и завершает свою работу.
2. Плагин выполняет SQL запрос, формирует ответный текст, выводит данные и помещает их в кеш.


Как это настроить:
Все настройки производятся в разделе Настройки кеширования плагина.
1. Настроить период обновления кеша - для сайтов, обновляемых нечасто (менее 100 статей в сутки) достаточно выставить следующие параметры:
archive/calendar - 10 минут ( 600 секунд )
popular - 5 минут ( 300 секунд)
при таких настройках пользователи вообще не заметят что используется кеширование

2. Включить кеширование выставив значение Да в параметре использовать кеширование данных

Вне форума

#2 2009-04-28 19:27:36

torg
Участник
Откуда: Россия
Здесь с 2009-04-23
Сообщений: 130
Сайт

Re: FYI: Использование механизма кеширования

То есть сам движок ngcms работает через mysql постоянно, а плугины позволяют часто не обращаться к базе за счёт кэша. По сути нагрузка будет на сервер с плагинами, как, если бы ngcms работал без плугинов, ведь отдаётся статика, а не динамика. Значит есть запас, чтобы наворотить много плугинов без сильного ущерба скорости. Значит нужно следить за плугинами и тестировать чётко, чтобы не получилось как напишу ниже.

Читал, как плугины некоторые у dle создавали большую нагрузку на сервер. Но не понятно, как тогда так было, если у них был кэш, видно плугины были плохо тестированы. У ngcms и 2z из-за плохо тестированых плугинов стала бы создаваться большая нагрузка. Остаётся только надеяться на хорошую систему кэширования в плугинах.

Вне форума

#3 2009-04-28 21:03:09

infinity237
Модератор
Откуда: Russia, Moscow
Здесь с 2008-11-09
Сообщений: 2,674
Рейтинг :   176 
Сайт

Re: FYI: Использование механизма кеширования

У ngcms и 2z из-за плохо тестированых плугинов стала бы создаваться большая нагрузка.

o_O

Вне форума

#4 2009-04-28 21:51:23

torg
Участник
Откуда: Россия
Здесь с 2009-04-23
Сообщений: 130
Сайт

Re: FYI: Использование механизма кеширования

Это к любым cms относится smile поэтому надеюсь что кэш будет всегда в плугинах протестирован. Просто удивился когда читал что какой-то плугин тормозит dle сильно.

Вне форума

#5 2009-04-28 21:54:30

ROZARD
Модератор
Откуда: Россия, Астрахань
Здесь с 2008-10-13
Сообщений: 1,523
Рейтинг :   82 
Сайт

Re: FYI: Использование механизма кеширования

А ты удивишься если узнаешль что у ngcms при включенном кешировании не тормозит систему...

Вне форума

#6 2009-04-28 21:55:01

infinity237
Модератор
Откуда: Russia, Moscow
Здесь с 2008-11-09
Сообщений: 2,674
Рейтинг :   176 
Сайт

Re: FYI: Использование механизма кеширования

Просто я удивился, что кеш может как-то неправильно работать...
Кеш это видь что:
1. Ставиться время, например 60 секунд.
2. С интервалом 60 секунд делается запрос к БД, и кеш обновляется.
3. Итог: получаем 1 запрос за 60 сек, вместо 60 запросов за 60 секунд.

Вне форума

#7 2009-04-28 21:55:15

torg
Участник
Откуда: Россия
Здесь с 2009-04-23
Сообщений: 130
Сайт

Re: FYI: Использование механизма кеширования

Ну так я примерно и написал в первом сообщении что думаю smile надеюсь. Я бывает ставлю кэш на 600 секунд.

Отредактировано torg (2009-04-28 21:55:45)

Вне форума

#8 2009-04-29 19:57:33

vitaly
Администратор
Откуда: Россия
Здесь с 2008-10-08
Сообщений: 2,788
Рейтинг :   115 

Re: FYI: Использование механизма кеширования

torg,... читал,... много думал,... ничего не понял.
Что именно ты хотел сказать?

Что двиг сам по себе не использует кеш?
Да, так и есть. То, что использует сам двиг - не очень-то поддаётся кешированию, хотя есть ещё фронт работ.

То, что надо тестировать плагины?
Ну так этим занимаются их авторы и пользователи.

То, что бывают плагины, создающие значительную нагрузку?
И тут нет ничего странного - если плагин должен сделать что-то сложное и перелопатить уйму данных, то иногда без высокой нагрузки не обойтись. А уж администратор сайта сам для себя решит нужен ли ему такой плагин или нет.

Вне форума

#9 2010-11-24 09:30:59

Necronominicon
Участник
Откуда: Луганск, Украина
Здесь с 2010-10-31
Сообщений: 102
Рейтинг :   
Сайт

Re: FYI: Использование механизма кеширования

Может туплю после бессонной ночи, но из фака ни черта не понял. Может кто-нибудь расскажет популярно как добавить кеширование? Какой код нужно добавить в плагин? Или где почитать об этом хотя бы?


Бог умер © Ницше
Ницше умер © Бог

Вне форума

#10 2010-11-24 10:54:57

ROZARD
Модератор
Откуда: Россия, Астрахань
Здесь с 2008-10-13
Сообщений: 1,523
Рейтинг :   82 
Сайт

Re: FYI: Использование механизма кеширования

Necronominicon пишет:

Может туплю после бессонной ночи, но из фака ни черта не понял. Может кто-нибудь расскажет популярно как добавить кеширование?

Зайти в плагин и включить)))

Necronominicon пишет:

Какой код нужно добавить в плагин? Или где почитать об этом хотя бы?

http://wiki.ngcms.ru/index.php/Базовые_ … и_плагинов "Использование кеширования в плагине" :P

Вне форума

#11 2010-11-24 17:35:39

Necronominicon
Участник
Откуда: Луганск, Украина
Здесь с 2010-10-31
Сообщений: 102
Рейтинг :   
Сайт

Re: FYI: Использование механизма кеширования

ROZARD, спасибо smile
Кеширование в плагине состоит из двух частей: - Одна из которых заносит из переменной данные которые нужно скешировать:

if (extra_get_param('test','cache')) {
	// Запись
	cacheStoreFile($cacheFileName, $output, 'test');
}
//Кодирум в md5
$cacheFileName = md5('test'.$config['theme'].$config['default_lang'].$year.$month).'.txt';

- Другая вынемает берет из кеша закешированные данные:

// Чтение (в параметрах плагин хранит: cache - флаг сообщающий надо ли использовать кеш, cacheExpire - время жизни кеша в секундах
 	if (extra_get_param('test','cache'))	{
		$cacheData = cacheRetrieveFile($cacheFileName, extra_get_param('test','cacheExpire'), 'test');
		if ($cacheData != false){
			// We got data from cache. Return it and stop
			$template['vars']['test'] = $cacheData;
			return;
		}
	}

Сохранить данные в файл-кеш: $fname - имя файла
$data - содержание
$plugin - ID плагина
function cacheStoreFile($fname, $data, $plugin = ) Возвращает: true - при успехе
false - при неуспехе Получить данные из кеш-файла с учётом времени жизни: $fname - имя файла
$expire - время жизни данных в секундах
$plugin - ID плагина
function cacheRetrieveFile($fname, $expire, $plugin = ) Возвращает: false - если данных нет или устарели данные если они есть и не устарели


Бог умер © Ницше
Ницше умер © Бог

Вне форума

#12 2010-11-24 17:56:31

vitaliy1978
Участник
Здесь с 2010-05-11
Сообщений: 45
Рейтинг :   
Сайт

Re: FYI: Использование механизма кеширования

Насколько я понимаю: extra_get_param скоро будет depricated. Вроде как лучше использовать pluginGetVariable. Это по тексту топиков.

То что касается кеша. Вещь обалденная. Снижает довольно хорошо нагрузку, но есть несколько вопросов/предложений к разработчику.

1). Предлагаю изменить пути хранения кеша, вместо /engine/cache/{plugin_name}, предлагаю хранить в /engine/cache/{template_name}/{lang}/{plugin_name}. Согласитесь, довольно логично, и будет неплохо для будующей расширяемости, учитывая уже заложенные в систему возможности многоязычности и многошаблонности.
2). Тот механизм что есть, устраивает на все 100%. Однако, не исключено, что в кеше будут храниться данные, которые неиспользуются очень давно. Значит надо как-то его чистить. Либо скриптами, тем кто на VPS либо для крона что-то написать, тем кто на вирт. хостинге.

Во всем остальном, кеш это весчь. Причем очень шустрая на NG.

Отредактировано vitaliy1978 (2010-11-24 17:57:27)

Вне форума

#13 2010-11-25 08:15:29

vitaly
Администратор
Откуда: Россия
Здесь с 2008-10-08
Сообщений: 2,788
Рейтинг :   115 

Re: FYI: Использование механизма кеширования

1. Не согласен.
Плагин сам решает что кешировать, далеко не обязательно, что закешированные данные как-то зависят от шаблона или языка пользователя (можно кешировать сырые данные, а потом на лету собирать шаблон). Кроме того, закешированные данные могут зависить от массы других критериев (к примеру, от статуса пользователя - залогинен или нет).

2. Да, есть такое дело. Очистка кеша пока не предусмотрена, но скоро будет.

Вне форума

#14 2010-11-25 09:44:56

vitaliy1978
Участник
Здесь с 2010-05-11
Сообщений: 45
Рейтинг :   
Сайт

Re: FYI: Использование механизма кеширования

vitaly пишет:

1. Не согласен.
Плагин сам решает что кешировать, далеко не обязательно, что закешированные данные как-то зависят от шаблона или языка пользователя (можно кешировать сырые данные, а потом на лету собирать шаблон). Кроме того, закешированные данные могут зависить от массы других критериев (к примеру, от статуса пользователя - залогинен или нет).

В принципе наверное правы. Согласен.

Вне форума

Сейчас в этой теме пользователей: 0, гостей: 1
[Bot] ClaudeBot

Подвал форума

Под управлением FluxBB 1.5.11
Модифицировал Visman

[ Сгенерировано за 0.017 сек, 7 запросов выполнено - Использовано памяти: 587.89 Кбайт (Пик: 624.89 Кбайт) ]