Nginx content caching

Кэширование контента в Nginx

    Общие понятия

    Когда caching включен, Nginx сохраняет ответы на дисковом кэше и использует их для ответа клиентам, таким образом не приходится заново обрабатывать запрос.

    Включение caching

    1. Кэширование включается путем добавления директивы proxy_cache_path в контекст верхнего уровня http{}. В параметре директивы указывается путь к локальной файловой системе и размер выделенной памяти для хранения кэша.
    2. Затем включить директиву proxy_cache в context(тип протокола, server, location)

    http { # ... proxy_cache_path /data/nginx/cache keys_zone=mycache:10m; server { proxy_cache mycache; location / { proxy_pass http://localhost:8000; } } }

    Кэшированные ответы хранятся вместе с метаданными.
    В кешировании участвуют два дополнительных процесса:
    cache manager(активируется для проверки состояния кеша и если размер кеша превышает установленный, он удаляет данные последнего доступа)
    cache loader(включается один раз при старте nginx и загружает ранее кешированные данные в общую память, поэтому в течении первых нескольких минут, это влияет на скорость загрузки. Это можно избежать путем включения дополнительных параметров в директиву proxy_cache_path:
    loader_threshold - продолжительность итерации в милисек.
    loader_files - max. кол-во элементов загруженное за одну итерацию
    loader_sleeps - задержка между итерациями

    proxy_cache_path /data/nginx/cache keys_zone=mycache:10m loader_threshold=300 loader_files=200;

    Дополнительные параметры:
    levels — уровень вложенности каталогов
    inactive - время по истечении которого кэш очищается
    max_size — максимальный размер данных под кэш(иначе удаляет данные)


    Примечание

    Отдельно настраивается кеширование для fastcgi_pass
    Можно задавать кеширование для отдельных страниц, используя директиву location
    Можно значительно ускорить процесс кэширования, если хранить кэш в оперативной памяти

    Пример комбинированной настройки кэширования
    http { # ... proxy_cache_path /data/nginx/cache keys_zone=mycache:10m loader_threshold=300 loader_files=200 max_size=200m; server { listen 8080; proxy_cache mycache; location / { proxy_pass http://backend1; } location /some/path { proxy_pass http://backend2; proxy_cache_valid any 1m; proxy_cache_min_uses 3; proxy_cache_bypass $cookie_nocache $arg_nocache$arg_comment; } } }
    Источники
    Последнее изменение: 07.10.2024 13:10


    Связанные темы
    Здесь пока нет комментариев
    Добавлять комментарии могут только авторизованные пользователи

    Авторизоваться
    Я буду рекламой
    Я тоже буду рекламой
    И я
    ВВЕРХ