Прежде чем говорить о веб-кэшировании, давайте поговорим о CDN — сети доставки контента (CDN) — это распределённая сеть, построенная и покрытая поверх сети носителя, состоящая из флота крайних узлов по всему миру. CDN может разделять нагрузку на исходный сервер, избегать сетевых перегрузок, обеспечивать распространение контента сайта в различных регионах и сценариях, а также повысить скорость доступа к ресурсам. CDN кэширует ресурсы исходного сервера к узлам ускорения IDC по всему миру, чтобы при запросе доступа и получения ресурсов исходного сервера, они могли получить кэшированные ресурсы на ближайших узлах CDN, повысить скорость доступа к ресурсам и разделить нагрузку на исходные серверы.
Как показано на следующем рисунке:
Проще говоря, когда пользователи получают доступ к некоторым статическим ресурсам, они не получают их с исходного сервера после использования CDN, а находят сервис CDN, ближайший к текущему пользователю, посредством вычислений и возвратных данных.
Веб-кэширование — это сервис между пользователем и исходным сервером, а Nginx предоставляет возможности веб-кэширования нативно. Другие включают Varnish, Squid и Cachewall — веб-кэширующие прокси (некоторые из которых не только предоставляют веб-кэширование).
О документации по конфигурации кэша Nginx:Вход по гиперссылке виден.
Во-первых, когда мы впервые получаем доступ к ресурсу через сервис кэширования, состояние кэша выглядитМИСС, запросит исходный сервер вытащить его, как показано на рисунке ниже:
Когда мы получаем доступ к ресурсу во второй раз, мы обнаруживаем, что ресурс кэширован, и состояние —УДАРИТЬ, как показано на рисунке ниже:
Основные параметры конфигурации Nginx следующие:
Основные параметры:
proxy_cache_path/data/nginx/cache levels=1:2 keys_zone=my_cache:10m max_size=10g inactive=180d use_temp_path=off;
●path: обязательный параметр, указывающий путь хранения кэшированных файлов. ●levels: Определяет иерархию каталога кэша. Каждый слой может быть представлен 1 (до 16 вариантов, 0-f) или 2 (до 256 вариантов, 00-ff), разделёнными : в центре. proxy_cache_path /data/nginx/cache; Это означает, что у всех кэшей есть только один каталог, например /data/nginx/cache/d7b6e5978e3f042f52e875005925e51b proxy_cache_path /data/nginx/cache levels=1:2; Это означает, что кэш является каталогом второго уровня (с каталогами 16*256=4096), например, /data/nginx/cache/b/51/d7b6e5978e3f042f52e875005925e51b ● keys_zone: Обязательный параметр — определить имя и размер общей области памяти, которая используется для хранения метаданных элемента кэша (все активные ключи и информация, связанная с кэшированными данными), чтобы nginx мог быстро определить, попадает ли запрос в кэш или промахивается; 1M может хранить 8000 ключей, 10M — 80000 ключей, 10M — 80000 ключей. ●неактивный: удаляет кэш-файлы, к которым не были доступны в указанное время, по умолчанию на 10 минут. ●max_size: Верхний предел кэш-памяти установлен, и если он не указан, максимум всё дисковое пространство будет использовано. ● use_temp_path: Разместить временные файлы непосредственно в каталог кэша.
proxy_cachemy_cache; #指定用于页面缓存的共享内存 название зоны определяется proxy_cache_path директивой
proxy_cache_min_uses1; ## определяет порог кэширования, сколько раз кэшируется запрос и не кэширует низкочастотные запросы для предотвращения потерь.
proxy_cache_valid200 3 м; #为不同的响应状态码设置不同的缓存时间 это запрос с кодом статуса кэша 200 и длительностью кэша 3 минуты
proxy_cache_key$request_uri; #指定缓存文件的key为请求的URI
add_headernginx-cache-status $upstream_cache_status; #把缓存状态设置为头部信息, ответь клиенту
proxy_passhttp://webservers; #设置代理转发的后端服务器的协议和地址
Используйте кэширующее прокси Nginx для игнорирования строк запроса
(Конец)
|