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

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

Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ;) ).
Аватара пользователя
Pazh
Former team member
Сообщения: 2317
Стаж: 16 лет 10 месяцев
Благодарил (а): 42 раза
Поблагодарили: 506 раз

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

Сообщение Pazh »

1. задание для форумного cron выполняется только одно, т.е. при запуске задания cron он блокируется до окончания выполнения задания. У каждого задания есть время последнего запуска и интервал запуска, т.е. если текущая дата >= время последнего запуска + интервал, то задание запуститься. В твоем случае крон повторно срабатывать не будет
2. да есть если у метода кеширования, который выставлен в config.php есть метод tidy ну и при выполнении 1-го пункта по времени устаревания кеша
Помощь в ЛС/email только за WM или ЮMoney
Аватара пользователя
Kot
phpBB 2.0.0
Сообщения: 207
Стаж: 17 лет 6 месяцев
Благодарил (а): 17 раз
Поблагодарили: 34 раза

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

Сообщение Kot »

Pazh писал(а):2. да есть если у метода кеширования, который выставлен в config.php есть метод tidy ну и при выполнении 1-го пункта по времени устаревания кеша
Охо-хо, а вот тут может быть проблема, как я вижу. Если у нас будет слишком большой кэш (тысячи файлов, гигабайты данных), то как бы этот крон-таск по проверке устаревшего кеша не вешал всю систему, перебирая весь список...

В итоге может получиться, что для конечного пользователя страницы будут на долю секунды :) отдаваться быстрее, а вот сам сервер будет нагружаться на порядок сильнее...
Аватара пользователя
Pazh
Former team member
Сообщения: 2317
Стаж: 16 лет 10 месяцев
Благодарил (а): 42 раза
Поблагодарили: 506 раз

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

Сообщение Pazh »

Ну это как Вы напишите в своей функции tidy так и будет. Зайдите в папку includes\acm\ и посмотрите в разных файлах как реализована функция tidy
Помощь в ЛС/email только за WM или ЮMoney
Аватара пользователя
Kot
phpBB 2.0.0
Сообщения: 207
Стаж: 17 лет 6 месяцев
Благодарил (а): 17 раз
Поблагодарили: 34 раза

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

Сообщение Kot »

Да, вижу, что скорее всего для кеширования придётся писать свой класс, наследник от ACM File Based Caching.

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

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

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

Сообщение Kot »

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

Если кто-то ждёт скорого релиза -- прошу извинить, времени недостаточно, я этим занимаюсь практически только в метро по дороге на работу и с работы. :)

Демо

Сейчас на сайте http://scooterclub.by/nforum установлена альфа-версия мода кеширования страниц для гостей и ботов. Можете зайти и оценить, если кому-то интересно.

На сайте включен дебаг, можно посмотреть время генерации страниц. Учтите, то, что показывается в стандартном футере -- это время генерации оригинальной незакешированной страницы! Если же ваша страница поднялась из кеша, то в самом-самом низу можно увидеть дополнительную информацию о времени генерации и количестве запросов на странице. Очень познавательно, когда хочется сравнить, сколько времени эта страница генерилась без кеширования, и сколько времени с кешированием.

Что кешируется

Кешируется главная страница форума, она же Board3 Portal. По понятным причинам это самая ресурсоёмкая страница форума. Кешируется на 5 минут (lazy cache). Выигрыш от кеширования получается в 30-60 раз.

Кешируются страницы форумов (страницы со списками тем). Точно так же кешируются на 5 минут, lazy cache. При попадании в кеш генерится быстрее в 10-20 раз.

Кешируются топики, постранично. Кешируются на 6 часов, но уже с помощью write-through cache, т.е. если в теме появится новое сообщение, удалится или отредактируется старое -- все закешированные страницы темы удаляются.

Преимущества

С учётом того, что 80% посетителей моего форума -- гости и боты, введение дополнительного кеширования должно заметно снизить нагрузку на сервер. Подтверждённых данных пока не имею, нужно подождать несколько дней для сбора статистики.

Недостатки

Недостатки попробую расположить в порядке приоритетности.

Самый большой и очевидный недостаток -- размер кеша. По моим грубым прикидкам, кеш может распухнуть до нескольких гигабайт, примерный размер вычисляется по формуле [количество сообщений форума] / 40 000 = [кеш] Гб (формула будет меняться, сильно зависит от активности гостей и стратегии кеширования).

Маркировка тем для гостей должна быть отключена, что страницы для каждого гостя выглядели одинаково.

Список тем и форумов обновляется только раз в 5 минут. В принципе, а ещё этот момент посмотрю, возможно, будет иметь смысл удалять эти страницы при появлении новых сообщений на форуме (сделать тоже write-through cache). Но на активно обновляемых форумах эффект от кэша списка тем и форумов в таком случае значительно снизится -- кэш будет чаще удаляться, чем в него будут попадать. В любом случае, тут нужны дополнительные исследования -- на активных форумах, я полагаю, и количество гостей на порядок больше.

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

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

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

Kot писал(а):стоит ли вообще браться.
Возрадуйся, уже готово ... - https://www.phpbb.com/community/viewtop ... &t=2171266
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 »

М-даааа... Я бы возрадовался, если бы этот мод появился не вчера, а неделю назад... А так у меня самого практически готов мой вариант, осталось только хорошенько оттестировать и сделать админ-страницу... :(

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

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

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

На Денвере на голом движке все нормально...На денвере на копии основного форума глюки -
https://www.phpbb.com/community/viewtop ... #p13235812

Исправить пока не получается...
NIKON-D90, AF-S 18-105, AF-S 14-24, AF-S 24-70
Аватара пользователя
МайскийЖук
phpBB 3.0.7-PL1
Сообщения: 2535
Стаж: 16 лет 11 месяцев
Благодарил (а): 17 раз
Поблагодарили: 366 раз

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

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

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

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

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

Еще как говорит...Скриншот для показа вала ошибок за время...
Жгу...
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 »

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

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

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

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

На сайте включен дебаг, можно посмотреть время генерации страниц.
Время генерации главной страницы твоего портала — 0.297s. У меня без всякого кэширования портала для гостей время генерации главной страницы моего портала — 0.220s.

Вопрос: где выигрыш от кэширования? Может я чего-то не заметил или недопонял?
Любовь и боль, покой и бой я как любой несу с собой…
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 17272
Стаж: 20 лет 4 месяца
Откуда: Красноярск
Благодарил (а): 632 раза
Поблагодарили: 2412 раз

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

Сообщение rxu »

МайскийЖук
Кэшируется вся страница, в т.ч. текст со временем ее генерации.
Изображение
Аватара пользователя
МайскийЖук
phpBB 3.0.7-PL1
Сообщения: 2535
Стаж: 16 лет 11 месяцев
Благодарил (а): 17 раз
Поблагодарили: 366 раз

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

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

Тогда как мне — гостю — определить, что страница была выдана мне быстрее, чем предполагалось? Где те цифры, которые мне нужны для сравнения?
Любовь и боль, покой и бой я как любой несу с собой…
Аватара пользователя
Татьяна5
Поддержка
Поддержка
Сообщения: 13159
Стаж: 15 лет 1 месяц
Благодарил (а): 236 раз
Поблагодарили: 3750 раз

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

Сообщение Татьяна5 »

Kot писал(а):как готовить изменения для авто-мода
MODX Creator

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