تقريبن ڪنهن به ويب ايپليڪيشن ۾ جيڪي تصويرون استعمال ڪندا آهن، انهن تصويرن جون ننڍيون ڪاپيون ٺاهڻ جي ضرورت هوندي آهي، ۽ اڪثر اضافي تصويرن لاءِ ڪيترائي فارميٽ هوندا آهن.
موجوده ايپليڪيشن ۾ نوان طول و عرض شامل ڪرڻ پڻ ڪجهه سر درد جو سبب بڻجن ٿا. تنهن ڪري ڪم:
مقصد
اچو ته ضرورتن جي فهرست کي بيان ڪريون:
ايپليڪيشن جي وجود دوران ڪنهن به وقت ايپليڪيشن ۾ اضافي ڪارڪردگي متعارف ڪرائڻ کان سواءِ اڏام تي ڪنهن به شڪل جون اضافي تصويرون ٺاهيو؛
هر درخواست تي اضافي تصويرون پيدا ڪرڻ جي ضرورت ناهي؛
غير بيان ڪيل فارميٽ جون اضافي تصويرون پيدا ڪرڻ جي صلاحيت کي بند ڪريو.
مان آخري نقطي جي وضاحت ڪندس، ڇاڪاڻ ته اهو ٿورڙي پهرين نقطي جي تضاد آهي. جيڪڏهن اسان ڪنهن به تصويرن جي نسل کي کوليو ٿا، ته پوءِ سائيٽ تي حملي جو امڪان آهي وڏي تعداد ۾ درخواستون پيدا ڪندي تصوير کي لامحدود تعداد ۾ فارميٽ ۾ تبديل ڪرڻ لاءِ، ان ڪري ان خطري کي بند ڪرڻ جي ضرورت آهي.
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;
}
جيتوڻيڪ آئون پڻ سفارش ڪندس ته سائزن جي حساب سان پريو.
ريڪ
اصل تصوير کي حذف ڪرڻ وقت، ڏيکاءُ، قدرتي طور تي، ڪيش مان ڊهي نه ويندا جيستائين ڪيش کي غلط قرار نه ڏنو وڃي، ۽ اسان جي صورت ۾، ڏيکاءُ حذف ٿيڻ کان پوءِ هڪ ڏينهن تائين موجود ٿي سگهي ٿو، پر اهو وڌ ۾ وڌ وقت آهي.