Нижеприведенные изменения позволяют бороться с любителями слишком часто обновлять индексную страницу в броузере. Используется стандартный механизм 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
Ещё маленькие минусы:
1. пришло ЛС, всплыло окошко.. так вот пока время не пройдёт, окошко будет вспывать снова и снова при каждом заходе на главную
2. Флудилка (shoutbox). Пишем туда сообщение с главной страницы, потом нажимаем refresh у браузера и сообщение в ней дублируется.
3. про GZIP я уже писал..
Плюсы:
1. Можно сделать кеширование у любой страницы, которая редко обновляется, напимер у статистики форума, дневников или фотоальбома! Прекрасно
Siava
Ну, собственно говоря кэширование зависит об броузера. Видать, ИЕ дурит на кешировании gzip страниц. Попробую поиграть еще заголовками, но, боюсь результата не будет...
nazar
Вы на даты то смотрите... Последнее сообщение Егор Наклоняев на форуме было ровно год назад.
Не все то WINDOWS, что висит... phpBB только учусь. ICQ, email, ЛС - только для личных сообщений. Вопросы по phpbb только на форумах. По найму не работаю.
Палыч на дату топика я смотрел конечно, еще мучался подымать тему или нет, но вопрос то интересный.
На форуме я недавно потому не могу знать когда Егор Наклоняев последний раз тут появлялся, а нужного мода тут на форуме не установлено, сорри если че не так, но мож по моему вопросу че подскажите?