Я нахожусь в процессе реструктуризации веб-стека моего проекта на: nginx -> haproxy -> многие экземпляры (apache / пассажирские рельсы)
Некоторые из целей включают:
Ресурсы image / stylesheet / javascript кэшируются в кеш с соответствующими заголовками. Наше кеширование страниц основано на внутренних параметрах и не должно реагировать на типичные элементы управления кешем. Для достижения этих целей наша конфигурация выглядит примерно так:
server {
...
location /really_slow_dynamic_content/ {
root /var/www/tmp;
error_page 404 = @fetch;
}
location @fetch {
internal;
proxy_pass haproxy_ip;
proxy_store /var/www/tmp${uri}_cache.html;
proxy_store_access user:rw group:rw all:r;
}
location /assets/ {
proxy_pass haproxy_ip;
proxy_cache assets;
}
location / {
proxy_pass haproxy_ip;
}
}
Я не особо разбираюсь в системном администраторе и знаю, что есть много альтернатив / настроек / дополнений, которые могут быть полезны. Я также не совсем понимаю разницу между proxy_cache и proxy_store. Итак, к моему актуальному вопросу ...
Пока мы не переместим ресурсы на машину nginx, имеет ли смысл использовать proxy_cache для ресурсов и proxy_store для медленного динамического контента?
Кроме того, если есть другие соображения или программное обеспечение, которые мне следует рассмотреть, я хотел бы услышать о них. Спасибо!
С момента публикации этого вопроса я понял, что исходная конфигурация, которую я использовал, вообще не использует хранилище, и что error_page и внутренние настройки из (semi?) официальный пример вики были не совсем необязательными (конфигурация обновлена здесь, поскольку кажется, что она работает, а рабочая конфигурация кажется лучшим наследием для этого вопроса). Таким образом, использование магазина для медленного создания (и редко обновляемых) полных страниц, а также фактический кеш для изображений, javascript и т. Д., Похоже, работает для нас очень хорошо. Я приму один ответ, поскольку он, по крайней мере, дал мне возможность отследить мою проблему, но я до сих пор не понимаю, использую ли я эти две директивы таким образом, для которого они были предназначены. или нет (ну, по крайней мере, в отношении магазина, кеш кажется немного более очевидным).
Если память мне не изменяет, proxy_store хранит двоичное представление запроса на элемент, тогда как proxy_cache хранит кешированную копию элемента в своей базовой форме.
proxy_cache на самом деле является подходящим механизмом кэширования с несколькими уровнями и подходит для хранения контента с нескольких сайтов с использованием одних и тех же ключей.
Я лично использую proxy_cache для хранения более 2 миллиардов изображений продуктов на каждом из наших серверов статического контента.
proxy_store используется для создания зеркала объектов «по запросу». Он помещает элементы по тому же пути, по которому данный элемент существует на бэкэнде.
В случае медленного динамического содержимого более подходит proxy_cache, поскольку он поддерживает истечение срока действия кеша.
Примером того, где proxy_store более полезен, может быть зеркало файлов rpm, где одно имя файла / версия никогда не будет истекший.