On Fri, 15 Feb 2002, Andre Kataev wrote:
> Видимо мой идиотизм процветает! Но не понял как настроить кеширование при поддержке РНР...:(
> Итак - имеем страничку генерящуюся через РНР. она на базу ведет предположим. Обновляем базу -
> 2 варианта.
> При написанном в header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); - (сегодняшнее только что созданное) - все показывает правильно, но ничего не кешируется. Ставим вчерашний день - все кешируется но ничего не меняется. И то и другое - нехорошо.
> Вопрос - можно ли штатными настройками апача/мод_акс добится правильной работы или подумать на предмет вставления функции запроса внешней процедуры, которая скажет что запрос надо исполнять не из кеша? (Про _INVALIDATE знаю но как то не получается ).
При минимальной настройке mod_accel
AccelCacheRoot cache
AccelPass / http://backend/
будут кэшироваться только те ответы, в которых есть положительный
Expires или Cache-Control. Всегда можно запретить кэширование
с помощью AccelNoCache на уровне сервера, Location или Files.
Для того, чтобы кэшировалось что-то без Expires или Cache-Control,
нужно задать AccelDefaultExpire. Задавать его можно на уровне сервера,
Location или Files. Запретить кэширование в этом случае можно со стороны
бэкенда с помощью отрицательных Expires или Cache-Control.
Можно игнорировать Expires и Cache-Control с помощью AccelIgnoreExpires.
Можно управлять кэшированием с помощью заголовка X-Accel-Expires.
Что касается Last-Modified, то он принимается во внимание только
при активном AccelLastModifiedFactor.
В общем ручек для настройки должно хватать.
Подробно это описано в readme.html#whycached
Что касается AccelInvalidate - это для другого. Если активен
AccelIgnoreNoCache, то средствами броузера обновить закэшированый URL
не никакой возможности. Для такого обновления и сделан AccelInvalidate.
Необходимо заметить, что его использование небезопасно, поскольку
его нельзя ограничить по адресу или авторизовать. Если это критично,
лучше использовать accel-cachemgr.
> И еще. Нет ли функции "маски запроса"? Пример - пользователь ходит с куками и без. у него два разных запроса к одной инфе... а у того что без куков так и вовсе уникальная :( Но это наверное слишком.
Вопрос не понял. Что значит маска запроса ?
Что касается кук. Если ответ на запрос в принципе может быть закэширован (это
решение принимается ещё до соединения с бэкендом) и кэширование с учётом
кук не включено, то все куки из запроса к бэкенду вырезаются. Это можно
запретить с помощью AccelPassCookie, но в этом случае бэкенд несёт
ответственность за указание mod_accel'у чего кэшировать, а чего нет.
Какие куки кэшировать - настраивается с помощью AccelCacheCookie.
Игорь Сысоев
=============================================================================
= Apache-Talk@xxxxxxxxxxxxx mailing list =
Mail "unsubscribe apache-talk" to majordomo@xxxxxxxxxxxxx if you want to quit.
= Archive avaliable at http://www.lexa.ru/apache-talk =
"Russian Apache" includes software developed
by the Apache Group for use in the Apache HTTP server project
(http://www.apache.org/) See
Apache LICENSE.
Copyright (C) 1995-2001 The Apache Group. All rights reserved.
Copyright (C) 1996 Dm. Kryukov; Copyright (C)
1997-2009 Alex Tutubalin. Design (C) 1998 Max Smolev.