Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Как проверить идентичность страниц?
 
 автор: Loki   (26.06.2006 в 15:17)   письмо автору
 
 

Пытаюсь оптимизировать систему кэширования.
Сейчас это выглядит так: после запроса страницы скрипт проверяет изменялась ли эта страница и если не изменялась - берем ее из кэша.
Все вроде просто... но вот как проверить что страница не менялась? самое простое - по хэшу. Но это глупо, так как страницу сначала надо сформировать:)
Пока остановился на следующем: при изменениях в БД ставится метка последнего изменения. Если файл в кэше старше этой метки - формируем страницу заново.
Но есть такие трудности как, например, авторизация пользователя... после того как он авторизовался, внешний вид страницы меняется...
В итоге, додумался до такой схемы: вычисляем хэш URL+$_SESSION и проверяем уникальность страницы по этому хэшу, а ее свежесть - по метке БД.
Несколько смущаем меня такой подход. Да и чувствую я что могут с ним быть проблемы... может у кого еще идеи есть?

   
 
 автор: cheops   (26.06.2006 в 20:24)   письмо автору
 
   для: Loki   (26.06.2006 в 15:17)
 

Это хэш в рамках HTTP или для своих собственных потребностей? Дело в том, что в HTTP для обозначения времени устаревания документа введен специальный HTTP-заголовок...

   
 
 автор: Loki   (26.06.2006 в 22:14)   письмо автору
 
   для: cheops   (26.06.2006 в 20:24)
 

нет. кэширование на стороне сервера с целью высвобождения мощностей:
подцепили мы шапку, ноги, сформировали и оформили контент. достали из базы новости - отдали страницу клиенту. А всю работу что мы проделали - просто выбрасываем. Если заходит следующий клиент, то мы все тоже самое проделываем снова.
Я же предлагаю после того как мы отдали страницу клиенту, сохранить ее на диск. Когда придет следующий посетитель мы только проверяем не менялись ли какие-нибудь элементыданной страницы. Если не менялись - подсовываем посетителю готовую страницу с диска.
Попробовал такую систему на сравнительно простой странице. выигрыш составил до 70%. Для какого-нибудь раздела со статьями, который почти не меняется, это очень актуально. думаю, что и форум можно подобным образом оптимизировать.
Но сейчас передо мной вопрос: как убедиться что запрошенная страница должна содержать такие же данные как и то что в кэше. Я свой вариант предложил... но как-то нет у меня на счет него уверенности.

   
 
 автор: cheops   (26.06.2006 в 23:09)   письмо автору
 
   для: Loki   (26.06.2006 в 22:14)
 

Так вы просто при любых измненениях статьи сразу её сбрасывайте на диск - тогда не надо будет заботится об актуальности - содержимое "кэша" и базы данных будет всегда согласовано.

   
 
 автор: Loki   (27.06.2006 в 00:35)   письмо автору
 
   для: cheops   (26.06.2006 в 23:09)
 

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

   
 
 автор: cheops   (27.06.2006 в 01:45)   письмо автору
 
   для: Loki   (27.06.2006 в 00:35)
 

Так и в линейном варианте это будет происходить автоматически :)

   
 
 автор: Loki   (27.06.2006 в 09:32)   письмо автору
 
   для: cheops   (27.06.2006 в 01:45)
 

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

   
 
 автор: valenok   (27.06.2006 в 09:53)   письмо автору
 
   для: Loki   (27.06.2006 в 09:32)
 

А если сравнивать через md5_file ?

   
 
 автор: Loki   (27.06.2006 в 10:45)   письмо автору
 
   для: valenok   (27.06.2006 в 09:53)
 

сравнивать что с чем?

   
 
 автор: valenok   (27.06.2006 в 11:16)   письмо автору
 
   для: Loki   (27.06.2006 в 10:45)
 

Не.
Так не выйдет.
Уже попробовал..

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования