تقریباً کسی بھی ویب ایپلیکیشن میں جو تصاویر استعمال کرتی ہے، ان تصاویر کی چھوٹی کاپیاں بنانے کی ضرورت ہوتی ہے، اور اکثر اضافی تصاویر کے لیے کئی فارمیٹس ہوتے ہیں۔
موجودہ ایپلی کیشن میں نئی جہتیں شامل کرنا بھی کچھ سر درد کا باعث بنتا ہے۔ لہذا کام:
ٹاسک
آئیے ضروریات کی فہرست کی نشاندہی کرتے ہیں:
ایپلی کیشن کے وجود کے دوران کسی بھی وقت ایپلی کیشن میں اضافی فعالیت کو متعارف کرائے بغیر پرواز پر کسی بھی فارمیٹ کی اضافی تصاویر بنائیں؛
ہر درخواست پر اضافی تصاویر بنانے کی ضرورت نہیں ہے۔
غیر متعینہ فارمیٹس کی اضافی تصاویر بنانے کی صلاحیت کو غیر فعال کریں۔
میں آخری نکتہ کی وضاحت کروں گا، کیونکہ یہ پہلے نقطہ سے قدرے متصادم ہے۔ اگر ہم کسی بھی تصویر کی جنریشن کو اوپن کرتے ہیں، تو تصویر کو لامحدود فارمیٹس میں تبدیل کرنے کی درخواستوں کی ایک بڑی تعداد پیدا کرکے سائٹ پر حملے کا امکان ہوتا ہے، اس لیے اس خطرے کو بند کرنے کی ضرورت ہے۔
nginx انسٹالیشن کنفیگریشن
مندرجہ بالا ضروریات کو حل کرنے کے لیے ہمیں nginx ماڈیولز کے درج ذیل سیٹ کی ضرورت ہے:
ماڈیولز ngx_http_image_filter_module и ngx_http_secure_link_module ڈیفالٹ کے طور پر انسٹال نہیں ہوتے ہیں، لہذا ان کو انسٹالیشن کنفیگریشن اسٹیج پر بتانا ضروری ہے۔ نگنکس:
ہم اپنی میزبان ترتیب میں ایک نیا شامل کرتے ہیں۔ محل وقوع اور عام کیشے کے پیرامیٹرز:
...
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;
}
اگرچہ میں سائز کا حساب لگانے کی بھی سفارش کروں گا۔ پیش منظر.
ریک
اصل تصویر کو حذف کرتے وقت، قدرتی طور پر، پیش نظارہ، کیشے سے حذف نہیں کیے جائیں گے جب تک کہ کیشے کو باطل نہیں کر دیا جاتا، اور ہمارے معاملے میں، حذف ہونے کے بعد ایک دن تک پیش نظارہ موجود رہ سکتے ہیں، لیکن یہ زیادہ سے زیادہ وقت ہے۔