উত্তর:
আমি আরও কিছু ফাইল এক্সটেনশনের পাশাপাশি আরও একটি সম্পূর্ণ ক্যাশে শিরোনাম করতে পছন্দ করি। দ্য '?' উপসর্গ একটি 'ক্যাপচারিং' চিহ্ন নয়, এনজিনেক্স একটি $ 1 তৈরি করবে না। এটি অপ্রয়োজনীয় বোঝা হ্রাস করতে সহায়তা করে।
location ~* \.(?:ico|css|js|gif|jpe?g|png)$ {
expires 30d;
add_header Pragma public;
add_header Cache-Control "public";
}
root
সেট সহ স্থির ফাইলগুলির সংজ্ঞা ছিল , সেক্ষেত্রে আপনার সেই ব্লকের দিকনির্দেশনা যুক্ত করা উচিত। (আমি জানি এটি 2 বছর দেরী, তবে ভবিষ্যতের নাগরিকদের জন্য)
আমার গ্রহণযোগ্য উত্তরগুলির ফলে ফাইলগুলি আর প্রদর্শিত হবে না সে সম্পর্কে মন্তব্য করার মতো যথেষ্ট খ্যাতি আমার নেই, তবে আমি এটি খুঁজে পেয়েছি এবং সহায়তা করতে চাই!
সংক্ষিপ্ত সংস্করণ:
আপনার যদি কোনও বিশ্বব্যাপী সেট না থাকে তবে নিশ্চিত করুন যে চিত্রগুলিতে আপনার অবস্থান ব্লক করার জন্য আপনার কাছে একটি রুট ডিরেক্টরি নির্দিষ্ট রয়েছে!
দীর্ঘ সংস্করণ নীচে:
প্রথমত, আমার এই সমাধানটি কার্যকর করার পদ্ধতিটি এই উত্তরটির সাথে সত্যই মিল ছিল , যেখানে আপনি বিধিটি লেখেন (স্বীকৃত উত্তরের মতো):
location ~* \.(?:ico|css|js|gif|jpe?g|png)$ {
expires 30d;
add_header Pragma public;
add_header Cache-Control "public";
}
img-cache.conf একটি ফাইলের মধ্যে
এবং তারপরে আপনার server {...}
নির্দেশিকায় সেই ফাইলটি অন্তর্ভুক্ত করুন ।
আমার সাইটগুলি উপলভ্য ফোল্ডারে সামসাইট.কমের আমার উদাহরণ:
#Image Caching
include /etc/nginx/conf/img-cache.conf;
এইভাবে আপনি চলমান একাধিক সাইটে চিত্রের ক্যাচিং অবস্থান ব্লক যুক্ত করতে পারেন।
সর্বোপরি, আমার একটি পরিস্থিতি রয়েছে যেখানে আমার / var / www / এ দুটি ফোল্ডার রয়েছে যা আমি পাবলিক_এইচটিএমএল - সুরক্ষিত এবং প্রশিক্ষণ হিসাবে অনুমতি দিই, তাই আমাকে এই সাইটের ফোল্ডারগুলি একাকী করে আমার সাইটের সার্ভারের নির্দেশিকায় নির্দিষ্ট অবস্থানের ব্লক তৈরি করতে হবে।
এর মতো, আমার কাছে গ্লোবাল রুট ডিরেক্টরি সেট নেই ।
সুতরাং আপনি যখন আপনার চিত্রের অবস্থানটি ব্লক করেন, তখন আপনি তাদের কোনও মূল ডিরেক্টরি সরবরাহ করতে পারেন না যা থেকে চিত্রগুলি সন্ধান করতে হয়!
আমার সমাধানটি তখন ছিল:
location ~ ^/training.+\.(?:ico|css|js|gif|jpe?g|png)$ {
root /var/www/;
expires 7d;
add_header Pragma public;
add_header Cache-Control "public";
try_files $uri 404;
}
location ~ ^/.+\.(?:ico|css|js|gif|jpe?g|png)$ {
root /var/www/secure;
expires 7d;
add_header Pragma public;
add_header Cache-Control "public";
try_files $uri 404;
}
.conf
। উপযুক্ত ফোল্ডারটি nginx/1.14.0 (Ubuntu)
মনে হচ্ছে /etc/nginx/snippets/
।
আপনি মেয়াদও সর্বাধিক নির্ধারণ করতে পারেন। আমি সিএসএস এবং জেএস এর জন্য যে নির্দেশনাটি ব্যবহার করি তা এখানে।
# Set css and js to expire in a very long time
location ~* ^.+\.(css|js)$ {
access_log off;
expires max;
}
সমস্ত উল্লিখিত সমাধানগুলি বিভিন্ন পাথের জন্য পৃথক উপকরণ থাকার সম্ভাবনাটিকে অস্বীকার করবে have এছাড়াও আপনার সমস্ত ক্যাশে মেয়াদ শেষ হয়ে যাওয়ার জন্য এক জায়গায় আপনার নীচের উপায়ে এনজিনেক্স ম্যাপ ব্যবহার করা উচিত।
...
# Expires mappings
map $sent_http_content_type $expires {
default off;
text/html epoch;
text/css max;
application/javascript 7d;
~image/ max;
}
...
server {
listen ...;
expires $expires;
location /assets/ {
# It is now possible to serve some resources from different path
alias /var/www/my_other_path/
}
# and have them all have same expirations
location / {
try_files $uri $uri/ /index.html;
}
...
}
Off
ক্যাচিং অক্ষম করে, epoch
(ইউনিক্স যুগের জন্য) রিসোর্সগুলির ফলাফল সর্বদা পুনরায় পাঠানো হয়, max
ব্রাউজারের সর্বোচ্চ মানটিতে তারিখ সেট করে।
~ চিত্র / যেকোন চিত্রের সাথে মেলে।
Http://nginx.org/en/docs/http/ngx_http_map_module.html এ nginx মানচিত্র সম্পর্কে আরও ।
$sent_http_content_type
হয় "text/css;charset=UTF-8"
উপরে অভিব্যক্তি ব্যর্থ হবে।
আপনার সমস্ত স্থিতিশীল ফাইলের যদি আপনার কাছে এমন এক জায়গা থাকে তবে এর মতো কিছু করবে ...
location /static {
your/location/to/static/files/static;
expires 30d;
add_header Cache-Control "public";
}
গৃহীত উত্তরের কারণে nginx আমার কোনও স্থিতিশীল ফাইল খুঁজে পায় না। সত্যিই নিশ্চিত নয় কেন, তবে এটি একটি সহজ বিকল্প।
/static
যে আপনি উপনামের শেষে ( .../files
উদাহরণের ঠিক পরে) ফোল্ডারটি (আপনি যা স্থানে সেট করেছেন) যুক্ত করেছেন।
যেহেতু এটি অনেক পুরানো থ্রেড, এবং আমি একটি আপ টু ডেট আশ্চর্যজনক টিউটোরিয়াল পেয়েছি।
সম্ভবত আপনি এটি পরীক্ষা করে দেখতে চান
উবুন্টু 16.04-এ Nginx এর শিরোনাম মডিউল সহ ব্রাউজার ক্যাচিং কীভাবে প্রয়োগ করা যায়