Í nánast hvaða vefforriti sem er sem notar myndir þarf að búa til lítil afrit af þessum myndum og oft eru til nokkur snið fyrir aukamyndir.
Að bæta nýjum víddum við núverandi forrit veldur einnig nokkrum höfuðverk. Þess vegna verkefnið:
Verkefni
Við skulum tákna listann yfir kröfur:
Búðu til viðbótarmyndir af hvaða sniði sem er á flugu án þess að setja viðbótarvirkni inn í forritið hvenær sem er á meðan forritið er til;
Ekki þarf að búa til viðbótarmyndir við hverja beiðni;
Slökktu á getu til að búa til viðbótarmyndir af ótilgreindu sniði.
Ég mun útskýra síðasta atriðið, því það stangast aðeins á við fyrsta atriðið. Ef við gerum myndatöku einhverra mynda opna, þá er möguleiki á árás á síðuna með því að búa til fjölda beiðna um að breyta stærð myndarinnar í óendanlega mörg snið, þannig að þetta varnarleysi þarf að loka.
nginx uppsetningarstillingar
Til að leysa ofangreindar kröfur þurfum við eftirfarandi sett af nginx einingum:
Einingar ngx_http_image_filter_module и ngx_http_secure_link_module eru ekki sjálfgefið uppsettar, þannig að þau verða að vera tilgreind á uppsetningarstigi nginx:
Við bætum nýjum við gestgjafastillingarnar okkar staðsetning og almennar skyndiminni færibreytur:
...
proxy_cache_path /www/myprojects/cache levels=1:2 keys_zone=image-preview:10m;
...
server {
...
location ~ ^/preview/([cir])/(.+) {
# Тип операции
set $oper $1;
# Параметры изображения и путь к файлу
set $remn $2;
# Проксируем на отдельный хост
proxy_pass http://myproject.ru:81/$oper/$remn;
proxy_intercept_errors on;
error_page 404 = /preview/404;
# Кеширование
proxy_cache image-preview;
proxy_cache_key "$host$document_uri";
# 200 ответы кешируем на 1 день
proxy_cache_valid 200 1d;
# остальные ответы кешируем на 1 минуту
proxy_cache_valid any 1m;
}
Þó ég myndi líka mæla með því að reikna út stærðirnar forskoðun.
Hrífa
Þegar upprunalegu myndinni er eytt verður forsýningum náttúrulega ekki eytt úr skyndiminni fyrr en skyndiminni er ógilt og í okkar tilviki geta forsýningar verið til í einn dag eftir eyðingu, en þetta er hámarkstími.