Tasvirlardan foydalanadigan deyarli har qanday veb-ilovada ushbu tasvirlarning kichik nusxalarini yaratish zarurati mavjud va ko'pincha qo'shimcha tasvirlar uchun bir nechta formatlar mavjud.
Mavjud dasturga yangi o'lchamlarni qo'shish ham ba'zi bosh og'rig'iga sabab bo'ladi. Shunday qilib, vazifa:
Maqsad
Keling, talablar ro'yxatini belgilaylik:
Ilova mavjud bo'lgan istalgan vaqtda ilovaga qo'shimcha funksiyalar kiritmasdan istalgan formatdagi qo'shimcha tasvirlarni tezda yarating;
Har bir so'rov bo'yicha qo'shimcha tasvirlar yaratilishi shart emas;
Belgilanmagan formatlarning qo'shimcha tasvirlarini yaratish imkoniyatini o'chirib qo'ying.
Men oxirgi fikrni tushuntiraman, chunki u birinchi fikrga biroz zid keladi. Agar biz har qanday tasvirni yaratishni ochiq qilsak, unda tasvirni cheksiz ko'p formatlarga o'zgartirish uchun ko'p sonli so'rovlarni yaratish orqali saytga hujum qilish ehtimoli bor, shuning uchun bu zaiflikni yopish kerak.
nginx o'rnatish konfiguratsiyasi
Yuqoridagi talablarni hal qilish uchun bizga quyidagi nginx modullari to'plami kerak bo'ladi:
Moduli ngx_http_image_filter_module и ngx_http_secure_link_module sukut bo'yicha o'rnatilmagan, shuning uchun ular o'rnatish konfiguratsiyasi bosqichida ko'rsatilishi kerak nginx:
Xost konfiguratsiyasiga yangisini qo'shamiz Manzil va umumiy kesh parametrlari:
...
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;
}
Garchi men o'lchamlarni hisoblashni tavsiya qilaman ko'rib chiqish.
Rake
Asl tasvirni o'chirishda, oldindan ko'rishlar, tabiiyki, kesh bekor qilinmaguncha keshdan o'chirilmaydi va bizning holatlarimizda, oldindan ko'rishlar o'chirilgandan keyin bir kun davomida mavjud bo'lishi mumkin, ammo bu maksimal vaqt.