uscr 01.11.2012 13:50
Есть вопрос! — Nginx и умное кеширование.
Здравствуйте. Читаю документацию к nginx и не нахожу там того, что мне нужно. Можно ли добиться от nginx в качестве кеширующего фронтенда такого поведения:на любой запрос быстро отдать закешированный ответ, проверить, не изменилась ли страница. Если изменилась, обновить кеш?
А может быть мне нужна другая конфигурация?
Ситуация такая:
есть внутренний портал. Тяжёлый, на php. В него добавляются "события". Это текст, текст пишется в базу, из базы его забирает php. Всё просто. Так вот события добавляются редко, а просматриваются довольно часто. И после добавления нужно как можно быстрее начать отдавать новую версию. Просто поставить срок жизни кеша в 1 минуту не прокатит - смысл установки прокси не в разгрузке апача, а в том что сейчас страница загружается раздражительно медленно. При этом частота запросов как раз примерно раз в минуту. Поэтому, при кеше, живущем в 1 минуту, профита не будет.
P.S.
Изменение архитектуры/переписывание/альтернативы существующей системы не предлагать.
maksimrussia 01.11.2012 16:25 #
+ 3 -
Ну если изменение текущей архитектуры этого тяжёлого php с использованием memcached не вариант, тогда тут только костыли - например свой башо-демон, который будет мониторить логи (если они есть, если нет, то можно подсесть на хвост к базе) на предмет добовления нового "события", а потом инвалидировать кеш nginx.
вообще это можно сделать так
в тяжелом PHP:
в этом случае nginx вроде чуть ли не из коробки должен вести себя желаемым образом
в тяжелом PHP:
- вести быструю отдельную таблицу Event_ID,LastModified
- возвращать хедер LastModified
- по приходу браузера за event_id проверять LastModified и если что кидать 304 Not Modified
в этом случае nginx вроде чуть ли не из коробки должен вести себя желаемым образом