[BETA] Index Cache MOD

Здесь авторы постили бета-версии своих модификаций для phpBB 2.0.x. Внимание! Не устанавливайте бета-версии модов на работающие форумы!

[BETA] Index Cache MOD

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

Нижеприведенные изменения позволяют бороться с любителями слишком часто обновлять индексную страницу в броузере. Используется стандартный механизм 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
Аватара пользователя
Егор Наклоняев
Moderator
Moderator
 
Сообщения: 404
Зарегистрирован: 25.10.2004 2:27
Откуда: оттуда
CPCH

Сообщение Siava » 01.04.2005 11:05

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

Всё хорошо, одно лишь замечание - кеширование не работает при включенной GZIP компрессии. :roll:
Генератор db_update-файлов для phpBB 2.0
Еще одно нарушение правил и будете забанены.
© Mr. Anderson
Аватара пользователя
Siava
phpBB 3.0.2
 
Сообщения: 2601
Зарегистрирован: 11.01.2005 14:29
Откуда: Питер

Сообщение Siava » 01.04.2005 17:03

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

Плюсы:
1. Можно сделать кеширование у любой страницы, которая редко обновляется, напимер у статистики форума, дневников или фотоальбома! Прекрасно :D
Генератор db_update-файлов для phpBB 2.0
Еще одно нарушение правил и будете забанены.
© Mr. Anderson
Аватара пользователя
Siava
phpBB 3.0.2
 
Сообщения: 2601
Зарегистрирован: 11.01.2005 14:29
Откуда: Питер

Сообщение Siava » 05.04.2005 18:21

Со включеным GZIP кеширование работает только в Firefox'e :roll:
Генератор db_update-файлов для phpBB 2.0
Еще одно нарушение правил и будете забанены.
© Mr. Anderson
Аватара пользователя
Siava
phpBB 3.0.2
 
Сообщения: 2601
Зарегистрирован: 11.01.2005 14:29
Откуда: Питер

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

Siava
Ну, собственно говоря кэширование зависит об броузера. Видать, ИЕ дурит на кешировании gzip страниц. Попробую поиграть еще заголовками, но, боюсь результата не будет...
Аватара пользователя
Егор Наклоняев
Moderator
Moderator
 
Сообщения: 404
Зарегистрирован: 25.10.2004 2:27
Откуда: оттуда

Сообщение nazar » 04.02.2008 15:49

Егор Наклоняев а можно сделать тоже самое но только для гостей?
nazar
phpBB 1.4.4
 
Сообщения: 82
Зарегистрирован: 31.08.2007 14:25
Откуда: org.ua

Сообщение Палыч » 04.02.2008 15:59

nazar
Вы на даты то смотрите... Последнее сообщение Егор Наклоняев на форуме было ровно год назад.
Не все то WINDOWS, что висит... phpBB только учусь.
ICQ, email, ЛС - только для личных сообщений. Вопросы по phpbb только на форумах. По найму не работаю.
Аватара пользователя
Палыч
Просто Палыч
Просто Палыч
 
Сообщения: 7991
Зарегистрирован: 24.05.2006 22:20
Откуда: Питер

Сообщение nazar » 04.02.2008 16:33

Палыч на дату топика я смотрел конечно, еще мучался подымать тему или нет, но вопрос то интересный.
На форуме я недавно потому не могу знать когда Егор Наклоняев последний раз тут появлялся, а нужного мода тут на форуме не установлено, сорри если че не так, но мож по моему вопросу че подскажите?
nazar
phpBB 1.4.4
 
Сообщения: 82
Зарегистрирован: 31.08.2007 14:25
Откуда: org.ua

Сообщение Siava » 04.02.2008 16:40

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
Генератор db_update-файлов для phpBB 2.0
Еще одно нарушение правил и будете забанены.
© Mr. Anderson
Аватара пользователя
Siava
phpBB 3.0.2
 
Сообщения: 2601
Зарегистрирован: 11.01.2005 14:29
Откуда: Питер

Сообщение nazar » 04.02.2008 21:25

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

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

неработает :( кеширует для всех...
nazar
phpBB 1.4.4
 
Сообщения: 82
Зарегистрирован: 31.08.2007 14:25
Откуда: org.ua

Сообщение Siava » 04.02.2008 22:34

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
Генератор db_update-файлов для phpBB 2.0
Еще одно нарушение правил и будете забанены.
© Mr. Anderson
Аватара пользователя
Siava
phpBB 3.0.2
 
Сообщения: 2601
Зарегистрирован: 11.01.2005 14:29
Откуда: Питер

Сообщение nazar » 05.02.2008 19:49

Siava я всегда так и добавлял после всех инклудов, вчера еще попробовал как в моде описно после
Код: Выделить всё
define('IN_PHPBB', true);
так вообще ошибки посыпались.
жаль но видать не удастся уменьшить нагрузку на сервак от гостей :)
nazar
phpBB 1.4.4
 
Сообщения: 82
Зарегистрирован: 31.08.2007 14:25
Откуда: org.ua

Сообщение Siava » 05.02.2008 20:49

nazar
Да не.. после строчки
Код: Выделить всё
init_userprefs($userdata);

добавить попробуй.
Генератор db_update-файлов для phpBB 2.0
Еще одно нарушение правил и будете забанены.
© Mr. Anderson
Аватара пользователя
Siava
phpBB 3.0.2
 
Сообщения: 2601
Зарегистрирован: 11.01.2005 14:29
Откуда: Питер

Сообщение nazar » 06.02.2008 22:30

Siava +1
респект, все работает! Добавил в индекс, вьюфорум, вьютопик.
Еще б сделать автоматическую отключалку gzip для гостей и ваще было б шоколадно :)
nazar
phpBB 1.4.4
 
Сообщения: 82
Зарегистрирован: 31.08.2007 14:25
Откуда: org.ua


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

 


  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0