Кэширование форума для гостей и ботов

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

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

Re: Кеширование форума для гостей и ботов

Сообщение Kot »

МайскийЖук писал(а):Тогда как мне — гостю — определить, что страница была выдана мне быстрее, чем предполагалось? Где те цифры, которые мне нужны для сравнения?
Kot писал(а): время генерации страниц. Учтите, то, что показывается в стандартном футере -- это время генерации оригинальной незакешированной страницы! Если же ваша страница поднялась из кеша, то в самом-самом низу можно увидеть дополнительную информацию о времени генерации и количестве запросов на странице.
Аватара пользователя
МайскийЖук
phpBB 3.0.7-PL1
Сообщения: 2535
Стаж: 16 лет 11 месяцев
Благодарил (а): 17 раз
Поблагодарили: 366 раз

Кеширование форума для гостей и ботов

Сообщение МайскийЖук »

Я ни в каком низу ничего дополнительного, кроме стандартной информации, указанной выше, не увидел. Скриншот можно?
Любовь и боль, покой и бой я как любой несу с собой…
Аватара пользователя
Пчелкин
phpBB 3.3.0
Сообщения: 11361
Стаж: 16 лет 8 месяцев
Благодарил (а): 1832 раза
Поблагодарили: 1358 раз

Re: Кеширование форума для гостей и ботов

Сообщение Пчелкин »

Объясните дураку нормальным языком что делает данный мод - https://www.phpbb.com/community/viewtop ... &t=2171266
Я понимаю что что-то экономит...Но вот если по деревенски...
На трех форумах на слабых серваках нагрузка на проц резко упала...где-то на 12-15%
На основном форуме пока ничего не понял...
Ошибку автор исправил...Внес изменения везде, на всех форумах, даже там где ошибки не наблюдал...
На основном ошибки сразу исчезли...На остальных их и не видел. Там протоколов дебаггера нет...
Чего мы добились модом от автора (не топикстартера, а того - с немецкой поддержки)?
Тока на дальневосточном языке, так как я все перевел, но до конца идеи не понял...ну тупой я... :oops:
NIKON-D90, AF-S 18-105, AF-S 14-24, AF-S 24-70
Аватара пользователя
Kot
phpBB 2.0.0
Сообщения: 207
Стаж: 17 лет 6 месяцев
Благодарил (а): 17 раз
Поблагодарили: 34 раза

Re: Кеширование форума для гостей и ботов

Сообщение Kot »

Пчелкин писал(а):Объясните дураку нормальным языком что делает данный мод - https://www.phpbb.com/community/viewtop ... &t=2171266
Я понимаю что что-то экономит...Но вот если по деревенски...
Для гостей он заставляет форум отдавать страницы с указанием времени их кеширования. Т.е. когда страница идёт гостю, в заголовке указывается, мол, дорогой браузер, кешируй эту страницу на столько-то времени.

На первый взгляд, казалось бы, преимущество получается только для одного конкретного пользователя -- когда он вернётся на ту страницу, где уже был, браузер ему эту страницу подгрузит из собственного кэша.

Но есть ещё такие приблуды (о которых я не подумал), позволяющие организовать как бы своё кеширующий прокси между твоим сервером и остальным интернетом, типа того же CloudFlare. Т.е. когда страница с кеширующим заголовком проходит через этот сервис, то она на нём же остаётся. И когда любой другой гость пытается получить эту страницу, а время её кеша ещё не истекло, то запрос, собственно, до твоего сервера не доходит -- страница отдаётся с этой самой прослойки.
МайскийЖук писал(а):Я ни в каком низу ничего дополнительного, кроме стандартной информации, указанной выше, не увидел. Скриншот можно?
Большие извинения. Я только сейчас вспомнил, что вчера после сообщения Пчёлкина в сердцах на своём сервере вернул все изменённые файлы обратно -- дескать зачем они там нужны, если всё равно вышел такой же мод. Потом оказалось, что мод не такой же, но накатить изменения обратно я забыл. :)

Сегодня по дороге на работу доделаю кое-какие изменения своего мода, протестирую и выкачу на сервер обратно. В теме дам знать.
Аватара пользователя
Пчелкин
phpBB 3.3.0
Сообщения: 11361
Стаж: 16 лет 8 месяцев
Благодарил (а): 1832 раза
Поблагодарили: 1358 раз

Re: Кеширование форума для гостей и ботов

Сообщение Пчелкин »

Kot писал(а):Потом оказалось, что мод не такой же,
Давай накатывай...будем смотреть что и как...

Добавлено спустя 56 секунд:
Kot писал(а):страницы с указанием времени их кеширования.
Там это отрубается...на фиг их еще вводить в заблуждение...

Добавлено спустя 3 минуты 47 секунд:
Kot писал(а): типа того же CloudFlare.
А гыде это организовывается? Как?

Добавлено спустя 40 секунд:
Вот у автора -
но и для нескольких пользователей при использовании посредника кэшей.
Он там как сделан?
NIKON-D90, AF-S 18-105, AF-S 14-24, AF-S 24-70
Аватара пользователя
Kot
phpBB 2.0.0
Сообщения: 207
Стаж: 17 лет 6 месяцев
Благодарил (а): 17 раз
Поблагодарили: 34 раза

Re: Кеширование форума для гостей и ботов

Сообщение Kot »

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

Re: Кэширование форума для гостей и ботов

Сообщение Kot »

Пчелкин писал(а):Давай накатывай...будем смотреть что и как...
Накатил последние изменения своего мода на http://scooterclub.by/nforum/, можно смотреть.

Из последнего: сделал write-through кэш для портала и страницы индекса. Это значит, что кэш этих страниц сбрасывается, как только появляются новые сообщения на форуме. Если новых сообщений нет -- кэш хранится не 5 минут, как раньше, а гораздо дольше.

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

Re: Кэширование форума для гостей и ботов

Сообщение Kot »

Понаблюдал за работой файлового кэша. Всё оказалось не так страшно, чтоб писать свой обработчик кэша, или чтоб переживать из-за размеров.

В общем, неизменяемые страницы у меня кэшируются на 12 часов. Можно было бы кэшировать их вечно, но на этих страницах, помимо сообщений, есть куча статистической информации типа просмотры, рейтинги и прочее.

За сутки кэш при моих посещениях форума достигает размера где-то в 200-300 мегабайт. Тут наблюдается прямая зависимость между активностью посещений форума гостями и ботами.

Автоматическая очистка кэша срабатывает вполне нормально, за приемлемое время. Например, когда в кэше 4000-5000 файлов (170-220 мб), очистка устаревшего кэша занимает 0,6-0,9 секунды.
Аватара пользователя
bumbr
phpBB 1.4.4
Сообщения: 129
Стаж: 15 лет 3 месяца
Откуда: Беларусь
Благодарил (а): 44 раза
Поблагодарили: 24 раза

Re: Кэширование форума для гостей и ботов

Сообщение bumbr »

Kot
Если это правда, то что пишется в левом нижнем углу Вашего форума, то это конечно же замечательно. Мне тоже пора что то делать вот таким — Time : 1.968s | 129 Queries | GZIP : On | Memory Usage: 9.44 МБ. Пора, наверное, в очередь становиться.
МайскийЖук
Вот Вам, пожалуйста, скриншот, мне понравилось.
scooter.jpg
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
Kot
phpBB 2.0.0
Сообщения: 207
Стаж: 17 лет 6 месяцев
Благодарил (а): 17 раз
Поблагодарили: 34 раза

Re: Кэширование форума для гостей и ботов

Сообщение Kot »

bumbr писал(а):Если это правда, то что пишется в левом нижнем углу Вашего форума, то это конечно же замечательно.
Ну, я понимаю ваши сомнения (слишком уж сладкая цифра), но вероятность ошибки, как мне думается, исключена. Вот кусок кода, отвечающий за вывод закэшированного контента:

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

			// echo cached content
			echo $cache_item;
			
			// echo debug information to the end of the page
			// it is not possible to use templated place, because no templates are used in cached output
			if (defined('DEBUG'))
			{
				$mtime = explode(' ', microtime());
				$totaltime = $mtime[0] + $mtime[1] - $starttime;

				$debug_output = sprintf('Time : %.3fs| ' . $db->sql_num_queries() . ' Queries', $totaltime);
				
				echo $debug_output;
			}
			
			//page_footer();
			garbage_collection();
			exit_handler();
Как видите, я использую стандартный механизм вывода тайминга, а всю обработку заканчиваю вызовом exit_handler(), следовательно дальнейшее исполнение скрипта исключено.
Аватара пользователя
Kot
phpBB 2.0.0
Сообщения: 207
Стаж: 17 лет 6 месяцев
Благодарил (а): 17 раз
Поблагодарили: 34 раза

Re: Кэширование форума для гостей и ботов

Сообщение Kot »

Btw, как более фэншуйно проверить, является ли посетитель гостем или ботом? Я проверяю так:

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

!$user->data['is_registered'] || $user->data['is_bot']
Но возникло подозрение, что более правильно будет проверять вот так:

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

$user->data['user_id'] == ANONYMOUS || $user->data['is_bot']
Кто-нибудь может разъяснить, в чём реальное отличие первого и второго способа? Или разницы нет?
Аватара пользователя
c61
phpBB 2.0.6
Сообщения: 506
Стаж: 13 лет 9 месяцев
Благодарил (а): 42 раза
Поблагодарили: 251 раз

Re: Кэширование форума для гостей и ботов

Сообщение c61 »

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

Re: Кэширование форума для гостей и ботов

Сообщение Kot »

c61
ха, в таком случае ещё лучше, мне достаточно оставить

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

!$user->data['is_registered']
А то я почему-то думал, что боты -- это тоже зарегистрированные пользователи, раз уж они на форуме отображаются как якобы "зарегистрированные".
Аватара пользователя
Balamut
Former team member
Сообщения: 2214
Стаж: 21 год 6 месяцев
Откуда: {postrow.POSTER_FROM}
Поблагодарили: 146 раз

Re: Кэширование форума для гостей и ботов

Сообщение Balamut »

$user->data['is_registered'] - это в т.ч. боты.

и лично я стараюсь не использовать "не равно"

Добавлено спустя 1 минуту 54 секунды:
$user->data['user_id'] == ANONYMOUS || $user->data['is_bot'] - самый лучший вариант.

Добавлено спустя 13 минут 45 секунд:
Кстати, можно попробовать "иф груп_ид == 1 || груп_ид == 6"
//
// That's all, Folks!
// -------------------------------------------------
Аватара пользователя
Kot
phpBB 2.0.0
Сообщения: 207
Стаж: 17 лет 6 месяцев
Благодарил (а): 17 раз
Поблагодарили: 34 раза

Re: Кэширование форума для гостей и ботов

Сообщение Kot »

Эту тему можно закрывать в связи с выпуском бета-релиза.

Вернуться в «Для авторов (phpBB 3.0.x)»