On Tue, 2 Apr 2002, Sergey Rusakov wrote:
> > Скажите, а разве нельзя проверять заголовок If_Modified_Since
> > и в зависимости от этого выдать страницу или
> > статус 304
>
> Плавали, утонули...
> Для этого нужно выдавать Last-modified. Это неплохо получается, но в
> некоторых случаях получается казус, когда с одного компа зашел сначала один
> узер, потом другой - браузер может взять уже имеющийся документ, т.к. он еще
> "свежий". Кроме того, возможны глюки с акселератором. Документ кэшируется от
> одного юзера, а потом отдается другому без проверки If-Modified-Since.
> Во всяком случае опыты на коленке по следующей схеме дали удручающий
> результат:
> 1. Сервер без акселератора, клиент под ИЕ 5.5
> 2. Выдаем Last-Modified всегда
> 3. проверяем If-modified-Since и если этот заголовок есть и условия по
> времени выполнены, то выдаем NOT_MODIFIED и отваливаем.
> 4. Входим под одним юзером. Смотрим.
> 5. Входим другим юзером. Видим то же самое.
Что значит "входим другим юзером" ? Если это означает, что
в NT разлогинились, вошли другим юзером, запустили MSIE и ввели
юзера, как-то соответствуещего NT'ёвому юзеру, то кэши и прочее
для этого юзера будет другим.
> Резюме: Игрища на основе Last-modified + Accelerator = bug'и
> непредсказуемые. Если поведение сервера и акселератора еще можно
> предсказать, то как поведет себя клиент ???? Один выдает If-modified-since,
> другой нет. Один проверяет Last-modified, другой - нет.
NN/IE выдают IMS, если им был дан LM и не было дано указание не кэшировать.
> В общем, лучшим решением было бы если определенная кука была как бы частью
> URL. Значение этой куки довольно постоянное, для многих клиентов оно не
> изменяется месяцами. Такой контент можно было бы кэшировать. Понятно, что
> объем кэша сильно вырастет, но такая работа нужна не для всего сайта, а лишь
> для его небольшой персонафицированной части.
>
> Делать извращенные решения тоже не хочется. Конечно, можно сделать что-то
> типа пяти rewrite + redirect + alias и т.д. и это будет работать. Но это
> потенциальный глюкодром в случае малейшего изменения конфигурации сервера. В
> этом случае лучше (т.е. проще) поставить второй (третий) бэкэнд сервер и
> делить нагрузку без кэширования.
>
> Итак, есть ли _красивое_и_простое_ решение этой проблемы или все это плод
> моего воспаленного воображения?
http://sysoev.ru/mod_accel/readme.html#AccelCacheCookie
Директива реально применяется на www.rambler.ru/db/tv/, где
список каналов и сортировка записана в куке.
Кроме того, насколько я знаю, директива применяется на www.kaspersky.ru.
Из-за этого, собственно, у неё и появился развесистый синтаксис.
Игорь Сысоев
http://sysoev.ru
=============================================================================
= Apache-Talk@lists.lexa.ru mailing list =
Mail "unsubscribe apache-talk" to majordomo@lists.lexa.ru if you want to quit.
= Archive avaliable at http://www.lexa.ru/apache-talk =