Գրեթե ցանկացած վեբ հավելվածում, որն օգտագործում է պատկերներ, անհրաժեշտություն կա ստեղծելու այդ պատկերների փոքր պատճենները, և հաճախ կան մի քանի ձևաչափեր լրացուցիչ պատկերների համար:
Գոյություն ունեցող հավելվածին նոր չափումներ ավելացնելը նաև որոշ գլխացավեր է առաջացնում: Հետևաբար առաջադրանքը.
Առաջադրանք
Նշենք պահանջների ցանկը.
Ստեղծեք ցանկացած ձևաչափի հավելյալ պատկերներ՝ առանց հավելվածի գոյության ընթացքում ցանկացած պահի հավելվածում լրացուցիչ ֆունկցիոնալություն մտցնելու.
Լրացուցիչ պատկերներ պետք չէ ստեղծել յուրաքանչյուր խնդրանքով.
Անջատեք չճշտված ձևաչափերի լրացուցիչ պատկերներ ստեղծելու հնարավորությունը:
Ես կբացատրեմ վերջին կետը, քանի որ այն փոքր-ինչ հակասում է առաջին կետին։ Եթե մենք բաց դարձնենք ցանկացած պատկերի գեներացիան, ապա կայքի վրա հարձակման հավանականություն կա՝ ստեղծելով մեծ թվով հարցումներ՝ պատկերը չափափոխելու անսահման թվով ձևաչափերի, ուստի այս խոցելիությունը պետք է փակվի:
nginx տեղադրման կոնֆիգուրացիա
Վերոնշյալ պահանջները լուծելու համար մեզ անհրաժեշտ է nginx մոդուլների հետևյալ հավաքածուն.
Մոդուլներ ngx_http_image_filter_module и ngx_http_secure_link_module լռելյայն տեղադրված չեն, ուստի դրանք պետք է նշվեն տեղադրման կազմաձևման փուլում nginx:
Մենք ավելացնում ենք նորը մեր հյուրընկալողի կազմաձևում գտնվելու վայրը և ընդհանուր քեշի պարամետրերը.
...
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;
}
Բնօրինակ պատկերը ջնջելիս նախադիտումները, բնականաբար, չեն ջնջվի քեշից մինչև քեշը չեղյալ համարվի, իսկ մեր դեպքում նախադիտումները կարող են գոյություն ունենալ ջնջելուց հետո մեկ օր, բայց սա առավելագույն ժամանակն է: