Уважаемые пользователи!
C 7 ноября 2020 года phpBB Group прекратила выпуск обновлений и завершила дальнейшее развитие phpBB версии 3.2.
С 1 августа 2024 года phpBB Group прекращает поддержку phpBB 3.2 на официальном сайте.
Сайт официальной русской поддержки phpBB Guru продолжит поддержку phpBB 3.2 до 31 декабря 2024 года.
С учетом этого, настоятельно рекомендуется обновить конференции до версии 3.3.

[BETA] Index Cache MOD

Здесь авторы постили бета-версии своих модификаций для phpBB 2.0.x. Внимание! Не устанавливайте бета-версии модов на работающие форумы!
Аватара пользователя
Егор Наклоняев
phpBB 2.0.4
Сообщения: 404
Стаж: 19 лет 5 месяцев
Откуда: оттуда
Контактная информация:

[BETA] Index Cache MOD

Сообщение Егор Наклоняев »

Нижеприведенные изменения позволяют бороться с любителями слишком часто обновлять индексную страницу в броузере. Используется стандартный механизм HTTP без дополнительных запросов к БД. 3 минут выбрано как наиболее, на мой взгляд, оптимальное время. Позволяет уменьшить нагрузку на сервер.
К недостаткам относится только возможная небольшая задержка получения информации.

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

##############################################################
## MOD Title: Index Cache MOD
## MOD Author: chyduskam < chuduskam@debilarius.ru > (Egor Naklonyaeff) N/A
## MOD Description: Cashe index page on user computer for 3 min
## MOD Version: 0.0.1
##
## Installation Level: Easy
## Installation Time: 2 Minutes
## Files To Edit: 2
##    index.php
##    includes/page_header.php
##    Included Files: n/a
##############################################################
## For Security Purposes, Please Check: http://www.phpbbguru.net/mods/ for the
## latest version of this MOD. Downloading this MOD from other sites could cause malicious code
## to enter into your phpBB Forum. As such, phpBB will not offer support for MOD's not offered
## in our MOD-Database, located at: http://www.phpbbguru.net/mods/
##############################################################
## Author Notes: It's work!!!
##############################################################
## MOD History:
##   2005-04-01 - Version 0.0.1
##      - initial release
##############################################################
## Before Adding This MOD To Your Forum, You Should Back Up All Files Related To This MOD
##############################################################

#
#-----[ OPEN ]-------------------------------------------------------
#
index.php

#
#-----[ FIND ]----------------------------------------
#
define('IN_PHPBB', true);

#
#-----[ BEFORE, ADD ]----------------------------------
#
// Begin HTTP Header MOD
if(isset($HTTP_SERVER_VARS['HTTP_IF_MODIFIED_SINCE']))
{
   $deadline=strtotime($HTTP_SERVER_VARS['HTTP_IF_MODIFIED_SINCE']);
	if((time()-$deadline)<180)
	{
		if(function_exists("getallheaders")) header('HTTP/1.1 304 Not Modified');
		else header('Status: 304 Not Modified');
       	if(isset($HTTP_SERVER_VARS['HTTP_IF_MODIFIED_SINCE'])) header("Last-Modified: ".$HTTP_SERVER_VARS['HTTP_IF_MODIFIED_SINCE']);
		if(isset($HTTP_SERVER_VARS['HTTP_IF_NONE_MATCH'])) header("Etag: ".$HTTP_SERVER_VARS['HTTP_IF_NONE_MATCH']);
        exit;
	}
}
define('PHPBB_HEADER',time());
// End HTTP Header MOD


#
#-----[ OPEN ]-------------------------------------------------------
#
includes/page_header.php

#
#-----[ FIND ]----------------------------------------
#
header ('Expires: 0');
header ('Pragma: no-cache');
#
#-----[ REPLACE WITH ]----------------------------------
#
// Begin HTTP Header MOD
if(defined('PHPBB_HEADER'))
{
	$MyETag='"phpBB'.gmdate("YmdHis", PHPBB_HEADER).'"';
	$MyGMTtime=gmdate("D, d M Y H:i:s", PHPBB_HEADER)." GMT";
	header("Last-Modified: ".$MyGMTtime);
	header("Etag: ".$MyETag);
	header("Expires: ".gmdate("D, d M Y H:i:s", time())." GMT");
}
else
{
	header ('Expires: 0');
	header ('Pragma: no-cache');
}
// End HTTP Header MOD

#
#-----[ SAVE/CLOSE ALL FILES ]------------------------------------------
#
# EoM
Аватара пользователя
Siava
Поддержка
Поддержка
Сообщения: 5277
Стаж: 19 лет 3 месяца
Откуда: Питер
Благодарил (а): 189 раз
Поблагодарили: 803 раза
Контактная информация:

Сообщение Siava »

Егор Наклоняев
О результатах тестирования буду писать сюда..

Всё хорошо, одно лишь замечание - кеширование не работает при включенной GZIP компрессии. :roll:
Еще одно нарушение правил и будете забанены. © Mr. Anderson
Ты очистил кеш? © Sheer
https://siava.ru (phpbb 2.0.x 3.5.x)
Аватара пользователя
Siava
Поддержка
Поддержка
Сообщения: 5277
Стаж: 19 лет 3 месяца
Откуда: Питер
Благодарил (а): 189 раз
Поблагодарили: 803 раза
Контактная информация:

Сообщение Siava »

Ещё маленькие минусы:
1. пришло ЛС, всплыло окошко.. так вот пока время не пройдёт, окошко будет вспывать снова и снова при каждом заходе на главную :lol:
2. Флудилка (shoutbox). Пишем туда сообщение с главной страницы, потом нажимаем refresh у браузера и сообщение в ней дублируется.
3. про GZIP я уже писал..

Плюсы:
1. Можно сделать кеширование у любой страницы, которая редко обновляется, напимер у статистики форума, дневников или фотоальбома! Прекрасно :D
Еще одно нарушение правил и будете забанены. © Mr. Anderson
Ты очистил кеш? © Sheer
https://siava.ru (phpbb 2.0.x 3.5.x)
Аватара пользователя
Siava
Поддержка
Поддержка
Сообщения: 5277
Стаж: 19 лет 3 месяца
Откуда: Питер
Благодарил (а): 189 раз
Поблагодарили: 803 раза
Контактная информация:

Сообщение Siava »

Со включеным GZIP кеширование работает только в Firefox'e :roll:
Еще одно нарушение правил и будете забанены. © Mr. Anderson
Ты очистил кеш? © Sheer
https://siava.ru (phpbb 2.0.x 3.5.x)
Аватара пользователя
Егор Наклоняев
phpBB 2.0.4
Сообщения: 404
Стаж: 19 лет 5 месяцев
Откуда: оттуда
Контактная информация:

Сообщение Егор Наклоняев »

Siava
Ну, собственно говоря кэширование зависит об броузера. Видать, ИЕ дурит на кешировании gzip страниц. Попробую поиграть еще заголовками, но, боюсь результата не будет...
nazar
phpBB 1.4.2
Сообщения: 73
Стаж: 16 лет 7 месяцев
Откуда: org.ua

Сообщение nazar »

Егор Наклоняев а можно сделать тоже самое но только для гостей?
Аватара пользователя
Палыч
Former team member
Сообщения: 9683
Стаж: 17 лет 10 месяцев
Откуда: Питер
Благодарил (а): 3 раза
Поблагодарили: 454 раза
Контактная информация:

Сообщение Палыч »

nazar
Вы на даты то смотрите... Последнее сообщение Егор Наклоняев на форуме было ровно год назад.
Не все то WINDOWS, что висит... phpBB только учусь.
ICQ, email, ЛС - только для личных сообщений. Вопросы по phpbb только на форумах. По найму не работаю.
nazar
phpBB 1.4.2
Сообщения: 73
Стаж: 16 лет 7 месяцев
Откуда: org.ua

Сообщение nazar »

Палыч на дату топика я смотрел конечно, еще мучался подымать тему или нет, но вопрос то интересный.
На форуме я недавно потому не могу знать когда Егор Наклоняев последний раз тут появлялся, а нужного мода тут на форуме не установлено, сорри если че не так, но мож по моему вопросу че подскажите?
Аватара пользователя
Siava
Поддержка
Поддержка
Сообщения: 5277
Стаж: 19 лет 3 месяца
Откуда: Питер
Благодарил (а): 189 раз
Поблагодарили: 803 раза
Контактная информация:

Сообщение Siava »

nazar
Чтобы работало только для гостей достаточно первый кусок мода сделать такого вида:

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

// Begin HTTP Header MOD
if ( !$userdata['session_logged_in'] ) {
if(isset($HTTP_SERVER_VARS['HTTP_IF_MODIFIED_SINCE']))
{
   $deadline=strtotime($HTTP_SERVER_VARS['HTTP_IF_MODIFIED_SINCE']);
   if((time()-$deadline)<180)
   {
      if(function_exists("getallheaders")) header('HTTP/1.1 304 Not Modified');
      else header('Status: 304 Not Modified');
          if(isset($HTTP_SERVER_VARS['HTTP_IF_MODIFIED_SINCE'])) header("Last-Modified: ".$HTTP_SERVER_VARS['HTTP_IF_MODIFIED_SINCE']);
      if(isset($HTTP_SERVER_VARS['HTTP_IF_NONE_MATCH'])) header("Etag: ".$HTTP_SERVER_VARS['HTTP_IF_NONE_MATCH']);
        exit;
   }
}
define('PHPBB_HEADER',time());
}
// End HTTP Header MOD
Еще одно нарушение правил и будете забанены. © Mr. Anderson
Ты очистил кеш? © Sheer
https://siava.ru (phpbb 2.0.x 3.5.x)
nazar
phpBB 1.4.2
Сообщения: 73
Стаж: 16 лет 7 месяцев
Откуда: org.ua

Сообщение nazar »

Siava спасибо, но я раньше такое пробовал неработало непойму почему :? , хотя щас отловил у себя несколько багов попробую еще раз

Добавлено спустя 1 час 2 минуты 49 секунд:

неработает :( кеширует для всех...
Аватара пользователя
Siava
Поддержка
Поддержка
Сообщения: 5277
Стаж: 19 лет 3 месяца
Откуда: Питер
Благодарил (а): 189 раз
Поблагодарили: 803 раза
Контактная информация:

Сообщение Siava »

nazar
ладно.. не уверен, что получится, но вдруг.
В первой инструкции вместо

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

#
#-----[ OPEN ]-------------------------------------------------------
#
index.php

#
#-----[ FIND ]----------------------------------------
#
define('IN_PHPBB', true);
сделать

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

#
#-----[ FIND ]----------------------------------------
#
init_userprefs($userdata);

#
#-----[ AFTER,ADD ]----------------------------------------
#
// Begin HTTP Header MOD
if ( !$userdata['session_logged_in'] ) {
if(isset($HTTP_SERVER_VARS['HTTP_IF_MODIFIED_SINCE']))
{
   $deadline=strtotime($HTTP_SERVER_VARS['HTTP_IF_MODIFIED_SINCE']);
   if((time()-$deadline)<180)
   {
      if(function_exists("getallheaders")) header('HTTP/1.1 304 Not Modified');
      else header('Status: 304 Not Modified');
          if(isset($HTTP_SERVER_VARS['HTTP_IF_MODIFIED_SINCE'])) header("Last-Modified: ".$HTTP_SERVER_VARS['HTTP_IF_MODIFIED_SINCE']);
      if(isset($HTTP_SERVER_VARS['HTTP_IF_NONE_MATCH'])) header("Etag: ".$HTTP_SERVER_VARS['HTTP_IF_NONE_MATCH']);
        exit;
   }
}
define('PHPBB_HEADER',time());
}
// End HTTP Header MOD
Еще одно нарушение правил и будете забанены. © Mr. Anderson
Ты очистил кеш? © Sheer
https://siava.ru (phpbb 2.0.x 3.5.x)
nazar
phpBB 1.4.2
Сообщения: 73
Стаж: 16 лет 7 месяцев
Откуда: org.ua

Сообщение nazar »

Siava я всегда так и добавлял после всех инклудов, вчера еще попробовал как в моде описно после

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

define('IN_PHPBB', true);
так вообще ошибки посыпались.
жаль но видать не удастся уменьшить нагрузку на сервак от гостей :)
Аватара пользователя
Siava
Поддержка
Поддержка
Сообщения: 5277
Стаж: 19 лет 3 месяца
Откуда: Питер
Благодарил (а): 189 раз
Поблагодарили: 803 раза
Контактная информация:

Сообщение Siava »

nazar
Да не.. после строчки

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

init_userprefs($userdata);
добавить попробуй.
Еще одно нарушение правил и будете забанены. © Mr. Anderson
Ты очистил кеш? © Sheer
https://siava.ru (phpbb 2.0.x 3.5.x)
nazar
phpBB 1.4.2
Сообщения: 73
Стаж: 16 лет 7 месяцев
Откуда: org.ua

Сообщение nazar »

Siava +1
респект, все работает! Добавил в индекс, вьюфорум, вьютопик.
Еще б сделать автоматическую отключалку gzip для гостей и ваще было б шоколадно :)
Закрыто

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