ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Re[2]: кеширование


  • To: nginx-ru@xxxxxxxxx
  • Subject: Re: Re[2]: кеширование
  • From: AlexeyK <itsmegawtf@xxxxxxxxx>
  • Date: Thu, 21 Jun 2007 15:40:33 +0300
  • Dkim-signature: a=rsa-sha1; c=relaxed/relaxed; d=gmail.com; s=beta; h=domainkey-signature:received:received:message-id:date:from:to:subject:in-reply-to:mime-version:content-type:content-transfer-encoding:content-disposition:references; b=HxgUrN/fYoNvY7eYVirvEkvYTJvOOe1KE95X9hBGUKje7pkX4uMXlP7/8G1IcYZ6NRJLzGFDuC+ZEAb2+m4OpTqu/64G0YZcYxIHcAvUWDxB72mFu0TSZfYcX+gZzcnkVj3+AKScwAKI+55FqRfNRrXSZ6GjtL45A+scB6OWiVI=
  • Domainkey-signature: a=rsa-sha1; c=nofws; d=gmail.com; s=beta; h=received:message-id:date:from:to:subject:in-reply-to:mime-version:content-type:content-transfer-encoding:content-disposition:references; b=e0bedvOi25Posd3u5qVacEOSwn0SmQtxy0K0abNa3GnS5Bd9hQYQqPbO++GMms+Y2KMwWUl49bg4O6VkDwoXOIfxP57B7wfOnLiNZLuT1mAnNuVfB0hMxkPQXwVCWcZxHPATpUlayYf1COgT0ko+DhB7JYseXRTEyIZFGrLczes=
  • In-reply-to: <20070621134836.3585.MAIL@xxxxxxxxx>
  • References: <467A3454.7090306@xxxxxxxxxxxxxxxxx> <467A43F5.6020506@xxxxxxxxxxxxx> <20070621134836.3585.MAIL@xxxxxxxxx>

2007/6/21, AleXXX V. NovikoFF <mail@xxxxxxxxx>:

У меня вот так сделано:

<?
$fp=fopen("portal.log", "r"); // открыли время последнего изменения
$r=trim(fgets($fp, 11));
fclose($fp);
if(time()-$r<60){ // 1 минута
    echo implode("", file("portal.txt")); // выдали кеш юзеру
    echo "\n\n<!-- FROM CACHE -->";
}else{

    set_time_limit(60);
    ignore_user_abort(true); // чтобы кеш не сломался
    ob_start();

?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML>
<HEAD>
 тра-ля-ля что-то тут генерится и т.д.
....

</HTML>
<?

$out=ob_get_contents();
ob_end_clean();

// сохранили кеш
$fp=fopen("portal.txt", "w");
fputs($fp, $out);
fclose($fp);
// записали время сохранения
$fp=fopen("portal.log", "w");
$r=fputs($fp, time());
fclose($fp);

};

?>

Собственно решение "в лоб" - но снизило нагрузку раз в 10, страница 
посещаемая...




On Thu, 21 Jun 2007 12:25:09 +0300
Sergey Smitienko <hunter@xxxxxxxxxxxxx> wrote:

SS>  Вам поможет ob_start() & Co. По 5-6 строчек на каждый php файл.
SS> > Да-да, кто бы еще популярно показал, как это делается без переделки уже
SS> > имеющегося php кода...
SS> >
SS> --
SS> Sergey Smitienko
SS>
SS>

--
AleXXX V. NovikoFF <mail@xxxxxxxxx>





А не проще ли временную метку брать каким-то stat(), а не
записью/чтением из/в файл ? :)

+ если php > 4, то разумнее file_get_contents()/file_put_contents();

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

Чем меньше в данной ситуации будет абстракций вокруг функционала
системы/вебсервера, тем быстрее будет работать подобный псевдо-кеш :)


 




Copyright © Lexa Software, 1996-2009.