[MODDB] Cache Guests Pages

Здесь авторы могут постить бета-версии своих модификаций для phpBB 3.0.x. Внимание! Не устанавливайте бета-версии модов на работающие форумы!
Правила форума
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Переход на 3.0.6 и выше | FAQ-3 (phpbb3) | Как задавать вопросы | Как устанавливать моды

Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ;) ).
Аватара пользователя
Kot
phpBB 2.0.0
Сообщения: 207
Стаж: 17 лет 6 месяцев
Благодарил (а): 17 раз
Поблагодарили: 34 раза

Re: [RC] Cache Guests Pages

Сообщение Kot »

Пока что максимальный форум, на которой ставили (о чём мне известно), это 5к.

Но проблем быть не должно. Разве что только кэш будет занимать около 8 гигов, как мне кажется. :) Хотя это ещё очень сильно зависит от количества тем и сообщений на форуме.
sosfx
phpBB 1.2.1
Сообщения: 21
Стаж: 14 лет 8 месяцев
Благодарил (а): 7 раз

Re: [RC] Cache Guests Pages

Сообщение sosfx »

Kot, около 1000к сообщений и 10к тем, но размер кэша не интересует, важна стабильность работы
Аватара пользователя
Kot
phpBB 2.0.0
Сообщения: 207
Стаж: 17 лет 6 месяцев
Благодарил (а): 17 раз
Поблагодарили: 34 раза

Re: [RC] Cache Guests Pages

Сообщение Kot »

На серьёзные баги никто не жаловался, а мелкие баги я старался оперативно исправлять. К тому же с самого первого дня этот мод крутится у меня на форуме, и я как разработчик внимательно слежу за его работой. Проблем не замечал, нагрузка на сервер уменьшилась как минимум на треть -- считаю это достаточно хорошим результатом.
Аватара пользователя
владимир1983
phpBB 3.2.6
Сообщения: 5954
Стаж: 16 лет 4 месяца
Откуда: Сергиев Посад
Благодарил (а): 373 раза
Поблагодарили: 727 раз

Re: [RC] Cache Guests Pages

Сообщение владимир1983 »

Вы про тот форум что в профиле? Каков размер кэша в среднем?
За ваши деньги решу ваши проблемы. Стучи в ЛС.
Нет человека - нет проблемы. (c)
Аватара пользователя
Kot
phpBB 2.0.0
Сообщения: 207
Стаж: 17 лет 6 месяцев
Благодарил (а): 17 раз
Поблагодарили: 34 раза

Re: [RC] Cache Guests Pages

Сообщение Kot »

Да, про него. В среднем размер кэша держится в районе 500 мегабайт.
Аватара пользователя
владимир1983
phpBB 3.2.6
Сообщения: 5954
Стаж: 16 лет 4 месяца
Откуда: Сергиев Посад
Благодарил (а): 373 раза
Поблагодарили: 727 раз

Re: [RC] Cache Guests Pages

Сообщение владимир1983 »

Код: Выделить всё

http://scooterclub.by/nforum/index.php?cache=1
Вот про этот параметр в url для гостей и ботов ?cache=1 можно подробней?
За ваши деньги решу ваши проблемы. Стучи в ЛС.
Нет человека - нет проблемы. (c)
Аватара пользователя
Kot
phpBB 2.0.0
Сообщения: 207
Стаж: 17 лет 6 месяцев
Благодарил (а): 17 раз
Поблагодарили: 34 раза

Re: [RC] Cache Guests Pages

Сообщение Kot »

Это артефакт не из моего мода, а из похожего мода Харавикка HTTP Guest Cache. У меня гостевые страницы физически кэшируются на диске, и отдаются клиенту готовым контентом, он же использует HTTP заголовки public cache.

Мой мод эффективен в любом случае, если есть гостевой трафик, его мод эффективен в тех случаях, если установлен кэширующий прокси. Я буквально пару часов назад отключил его мод, потому что он для меня оказался бесполезным.
Аватара пользователя
владимир1983
phpBB 3.2.6
Сообщения: 5954
Стаж: 16 лет 4 месяца
Откуда: Сергиев Посад
Благодарил (а): 373 раза
Поблагодарили: 727 раз

Re: [RC] Cache Guests Pages

Сообщение владимир1983 »

Kot писал(а):физически кэшируются на диске
Какая папка под это отводится?
За ваши деньги решу ваши проблемы. Стучи в ЛС.
Нет человека - нет проблемы. (c)
Аватара пользователя
Kot
phpBB 2.0.0
Сообщения: 207
Стаж: 17 лет 6 месяцев
Благодарил (а): 17 раз
Поблагодарили: 34 раза

Re: [RC] Cache Guests Pages

Сообщение Kot »

Папка системного кэша.
Аватара пользователя
Citromon
phpBB 1.4.3
Сообщения: 78
Стаж: 14 лет 7 месяцев
Благодарил (а): 32 раза

Re: [RC] Cache Guests Pages

Сообщение Citromon »

Kot писал(а):Разве что только кэш будет занимать около 8 гигов, как мне кажется. :)
Серьёзно, сколько на вашем сайте мотоклуба занимает папка кэша?
Теоретически, можно ли как-то контролировать объём кэша, например, чтобы кэшировались наиболее посещаемые страницы? Возможность ввести лимит в админке?
Аватара пользователя
Kot
phpBB 2.0.0
Сообщения: 207
Стаж: 17 лет 6 месяцев
Благодарил (а): 17 раз
Поблагодарили: 34 раза

Re: [RC] Cache Guests Pages

Сообщение Kot »

Citromon писал(а):Серьёзно, сколько на вашем сайте мотоклуба занимает папка кэша?
Как я выше писал, на моём форуме папка кэша в среднем занимает 500 мегабайт. Это форум с 2-3к уников в сутки, 8к тем.

Возможности кэшировать только популярные страницы не вижу (как их определять, популярные-то?). Если будет идея -- озвучивайте, попробую реализовать.

Размер кэша можно заметно уменьшить, поигравшись с настройкой "максимальный срок кэширования" в админке мода. Если уменьшить время (по умолчанию 12 часов), то файлы кэша будут быстрее устаревать. Нет смысла ставить меньше 2-х часов, потому что по умолчанию устаревшие файлы кэша чистятся раз в 2 часа.

Добавлено спустя 2 минуты 46 секунд:
Кстати говоря, насчёт популярных страниц. Если страница не популярная, то она и в кэш может вообще не попасть -- ведь вначале на страницу нужно зайти, чтоб она сохранилась в кэше.
Последний раз редактировалось Kot 25.03.2013 14:31, всего редактировалось 1 раз.
Аватара пользователя
Citromon
phpBB 1.4.3
Сообщения: 78
Стаж: 14 лет 7 месяцев
Благодарил (а): 32 раза

Re: [RC] Cache Guests Pages

Сообщение Citromon »

Kot писал(а): папка кэша в среднем занимает 500 гигабайт
Может, всё-таки 500 мб, ну, хотя бы 5 гб.
В последнем случае для обычного хостинга это слишком круто.

У меня такая идея - как-то реализовать выбор кэширования: все страницы или только главные (index.php, portal.php и т.д.);
или же кэшировать только последние заданные n тем.
Аватара пользователя
Kot
phpBB 2.0.0
Сообщения: 207
Стаж: 17 лет 6 месяцев
Благодарил (а): 17 раз
Поблагодарили: 34 раза

Re: [RC] Cache Guests Pages

Сообщение Kot »

Citromon писал(а):Может, всё-таки 500 мб, ну, хотя бы 5 гб.
В последнем случае для обычного хостинга это слишком круто.
Конечно же мегабайт, это просто оговорка.
Citromon писал(а):У меня такая идея - как-то реализовать выбор кэширования: все страницы или только главные (index.php, portal.php и т.д.);
Сейчас именно так и сделано, кэшируются самые используемые страницы: просмотр тем, сообщений, портал.
Citromon писал(а):или же кэшировать только последние заданные n тем.
Что это значит? Последние созданные темы? Ну так не факт, что они будут самые популярные. К тому же если они новые, то скорее всего там идёт постоянное обсуждение, а следоватлеьно кэширование не столь эффективно -- кэш постоянно сбрасывается после обновления темы. Эффективнее кэшировать старые темы, где нет новых сообщений, но есть просмотры.
Аватара пользователя
Citromon
phpBB 1.4.3
Сообщения: 78
Стаж: 14 лет 7 месяцев
Благодарил (а): 32 раза

Re: [RC] Cache Guests Pages

Сообщение Citromon »

500 мб - это просто прекрасно. Мне аж стрёмно стало - 5 гб.
Kot писал(а):Эффективнее кэшировать старые темы, где нет новых сообщений, но есть просмотры.
Да, вы правы.

И напоследок вопрос - как настроить кэширование других старниц аддонов, например, багтрекера, галереи и т.д.?
Аватара пользователя
Kot
phpBB 2.0.0
Сообщения: 207
Стаж: 17 лет 6 месяцев
Благодарил (а): 17 раз
Поблагодарили: 34 раза

Re: [RC] Cache Guests Pages

Сообщение Kot »

Citromon писал(а):И напоследок вопрос - как настроить кэширование других старниц аддонов, например, багтрекера, галереи и т.д.?
Процитирую со страницы FAQ на phpbb.com (страница пока не доступна, потому что мод всё ещё на стадии валидации):
Steps are very simply.

1. Analyze your page for URL parameters which should be cached, and which should not.

For example, lets examine viewtopic.php page. It is complex page, contains much parameters. We can cache the following call:

Код: Выделить всё

viewtopic.php?f=1&t=2123&start=30
It is frequent use-case, great chances that the page will be called by different users before it expires.

Next example demonstrates undesirable case for page caching (for cases when default configured user_post_show_days != 5):

Код: Выделить всё

viewtopic.php?f=1&t=2123&start=30&st=5
There is no sense to cache this custom case when user tries to get data just for latest n days. Low possibility that anyone else will use this filter until cache expiration.

2. Knowing which parameters could be passed to the page, create CGP_KEY based on cacheable parameters.

The example code with [c]viewtopic.php[/c] will look as below:

Код: Выделить всё

//-- BEGIN Cache page content for guests
if (!class_exists('CGP'))
{
	include($phpbb_root_path . 'includes/cache_guests_pages.' . $phpEx);
}

if (defined('CGP_ENABLED'))
{
	// process typical cases only to prevent cache size exploding
	if (CGP::is_cacheable_user($user) && 
		$topic_id && !$view && !$update &&
		$sort_days == $default_sort_days &&
		$sort_key == $default_sort_key &&
		$sort_dir == $default_sort_dir)
	{
		define('CGP_KEY', "_vt_t{$topic_id}_s{$start}" . CGP::user_type_suffix($user));

		CGP::display_if_cached(CGP_KEY);
	}
}
//-- END Cache page content for guests
In most cases we have not analyze the page for "not cacheable" parameters. For example, portal.php does not require any URL parameters, and their cache code looks like following:

Код: Выделить всё

//-- BEGIN Cache page content for guests
if (!class_exists('CGP'))
{
	include($phpbb_root_path . 'includes/cache_guests_pages.' . $phpEx);
}

if (defined('CGP_ENABLED'))
{
	if (CGP::is_cacheable_user($user))
	{
		define('CGP_KEY', '_portal' . CGP::user_type_suffix($user));

		CGP::display_if_cached(CGP_KEY);
	}
}
//-- END Cache page content for guests
3. Ensure, that your page contains [c]page_footer()[/c] call inside.

Page's content stored into the cache within [c]page_footer()[/c] function. Cache file name based on mentioned [c]CGP_KEY[/c] variable, so be sure that you do not have duplicated [c]CGP_KEY[/c] on your pages.

4. If required, configure cache refreshing (write-through caching).

See functions [c]destroy_forum_cache()[/c] and [c]destroy_topic_cache()[/c] within [c]includes/cache_guests_pages.php[/c].

P.S. I've analyzed Apache logs for my site, and have found index.php, viewforum.php, viewtopic.php, portal.php files as often used and utilizing much CPU resources. That is why I implemented caching for these files, and ignored other files.

But if you believe that you need to cache anything else, just create code snippet as on examples above, and let me know. I'll review it and include into next versions of the mod.
Уж извините, переводить лень. :)

Вернуться в «Бета-версии модов для phpBB 3.0.x»