Pothuajse në çdo aplikacion ueb që përdor imazhe, ekziston nevoja për të krijuar kopje të vogla të këtyre imazheve dhe shpesh ka disa formate për imazhe shtesë.
Shtimi i dimensioneve të reja në një aplikacion ekzistues gjithashtu shkakton disa dhimbje koke. Prandaj detyra:
Detyrë
Le të shënojmë listën e kërkesave:
Gjeneroni imazhe shtesë të çdo formati në fluturim pa futur funksione shtesë në aplikacion në çdo kohë gjatë ekzistencës së aplikacionit;
Nuk ka nevojë të krijohen imazhe shtesë në çdo kërkesë;
Çaktivizoni aftësinë për të gjeneruar imazhe shtesë të formateve të paspecifikuara.
Unë do të shpjegoj pikën e fundit, sepse ajo bie pak në kundërshtim me pikën e parë. Nëse e bëjmë të hapur gjenerimin e ndonjë imazhi, atëherë ekziston mundësia e një sulmi në sajt duke gjeneruar një numër të madh kërkesash për të ndryshuar madhësinë e imazhit në një numër të pafund formatesh, kështu që kjo dobësi duhet të mbyllet.
Konfigurimi i instalimit nginx
Për të zgjidhur kërkesat e mësipërme, ne kemi nevojë për grupin e mëposhtëm të moduleve nginx:
Модули ngx_http_image_filter_module и ngx_http_secure_link_module nuk janë instaluar si parazgjedhje, kështu që ato duhet të specifikohen në fazën e konfigurimit të instalimit nginx:
Ne shtojmë një të re në konfigurimin tonë të hostit vend dhe parametrat e përgjithshëm të cache:
...
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;
}
Edhe pse unë do të rekomandoja gjithashtu llogaritjen e madhësive preview.
grabujë
Kur fshini imazhin origjinal, pamjet paraprake, natyrisht, nuk do të fshihen nga cache derisa cache të zhvlerësohet, dhe në rastin tonë, pamjet paraprake mund të ekzistojnë për një ditë pas fshirjes, por kjo është koha maksimale.