প্রশ্ন সেটিং nginx থেকে পরিবেশিত স্ট্যাটিক কন্টেন্ট জন্য হেডার মেয়াদ শেষ


আমি আমার স্ট্যাটিক কন্টেন্ট সার্ভারে nginx ব্যবহার করছি, একটি উপায় আছে যে আমি একটি নির্দিষ্ট নিয়ম পূরণ করে প্রতিটি ফাইলের জন্য মেয়াদ শেষ শিরোনাম সেট করতে পারেন? উদাহরণস্বরূপ, আমি কি '.css' এর এক্সটেনশন থাকা সকল ফাইলগুলির মেয়াদ শেষ করতে পারি?


85
2018-06-10 07:19


উত্স




উত্তর:


আমি আরো কিছু ফাইল এক্সটেনশান ছাড়াও, আরো সম্পূর্ণ ক্যাশ হেডার করতে পছন্দ করি। দ্য '?' উপসর্গ একটি 'নন-ক্যাপচারিং' চিহ্ন, nginx একটি $ 1 তৈরি করবে না। এটা অপ্রয়োজনীয় লোড হ্রাস করতে সাহায্য করে।

location ~* \.(?:ico|css|js|gif|jpe?g|png)$ {
    expires 30d;
    add_header Pragma public;
    add_header Cache-Control "public";
}

112
2017-11-25 21:07



আমার সব স্ট্যাটিক ফাইল যে যোগ করার পরে পাওয়া যায় নি। - Jürgen Paul
@ জ্যাকসপিয়ারো: আমি আসলেই তা ব্যাখ্যা করতে পারছি না কেন এটা ঘটেছে, কারণ এটি সবসময় আমার জন্য কাজ করেছে। আপনি Nginx চলমান add_header মডিউল প্রদান অনুপস্থিত? এই ধরনের জিনিস সত্যিই সুযোগ সীমিত হয়, আপনি নিশ্চিত যে অন্য নির্গমন সমন্বয় একটি সমস্যা নয়? - J. M. Becker
সম্ভবত অন্য ব্লক একটি সঙ্গে স্ট্যাটিক ফাইলের জন্য সংজ্ঞা ছিল root সেট, যে ক্ষেত্রে আপনি যে ব্লক নির্দেশাবলী যোগ করা উচিত। (আমি এই 2y দেরী জানি, কিন্তু ভবিষ্যতে নাগরিকদের জন্য) - aularon
আমি ব্যক্তিগতভাবে স্পার্মিফিকেশন প্রশংসা করি, বিশেষত ভবিষ্যতের অনুসন্ধানকারীদের জন্য কারণ তারা প্রায়ই মূল পোস্টের পরে অনেকগুলি দেখায়। +1: পি - J. M. Becker
এই সম্পূর্ণভাবে আমার ওয়ার্ডপ্রেস ওয়েবসাইট messes ব্যবহার করে। CSS এবং ছবি প্রদর্শন করা হয় না। কোথাও অন্য কোন দ্বন্দ্ব আছে? - user1641443


server {
    ...

    location ~* \.css$ {
       expires 30d;
    }
    ...
}

দ্য location নির্দেশ

দ্য expires নির্দেশ


21
2018-06-10 07:23





আমার কাছে স্বীকৃত উত্তর নেই কেন গ্রহণযোগ্য উত্তরগুলি আর ফাইল দেখাতে পারে না, তবে আমি এটি খুঁজে বের করেছি এবং সাহায্য করতে চাই!

সংক্ষিপ্ত সংস্করণ:

যদি আপনার বিশ্বব্যাপী একটি সেট না থাকে তবে আপনার অবস্থানের ব্লকটির জন্য নির্দিষ্ট রুট ডিরেক্টরিটি নিশ্চিত করুন!

নীচের দীর্ঘ সংস্করণ:


প্রথমত, এই সমাধান বাস্তবায়ন আমার পদ্ধতি সত্যিই অনুরূপ ছিল এই উত্তর, যেখানে আপনি নিয়ম লিখুন (গৃহীত উত্তর হিসাবে):

location ~* \.(?:ico|css|js|gif|jpe?g|png)$ {
    expires 30d;
    add_header Pragma public;
    add_header Cache-Control "public";
}

একটি ফাইল মধ্যে চিত্র cache.conf

এবং তারপর আপনার মধ্যে যে ফাইল অন্তর্ভুক্ত server {...} নির্দেশে।

আমার সাইটে somesite.com আমার উদাহরণ-উপলব্ধ ফোল্ডার:

 #Image Caching
 include /etc/nginx/conf/img-cache.conf;

যেভাবে আপনি চলমান হতে পারে এমন একাধিক সাইটগুলিতে চিত্র ক্যাশিং অবস্থান ব্লক যুক্ত করতে পারেন।


সর্বোপরি, আমার এমন একটি পরিস্থিতি রয়েছে যেখানে আমার / var / www / দুটি ফোল্ডার রয়েছে যা আমি public_html- নিরাপদ এবং প্রশিক্ষণ হিসাবে মঞ্জুরি দিই, তাই আমাকে এই সাইটের বাইরে একযোগে আমার সাইটের সার্ভারের নির্দেশিকাতে নির্দিষ্ট অবস্থান ব্লকগুলি তৈরি করতে হবে।

যেমন, আমি একটি গ্লোবাল রুট ডিরেক্টরি সেট না

সুতরাং যখন আপনি আপনার ইমেজ অবস্থান ব্লক করা, আপনি একটি রুট ডিরেক্টরি সঙ্গে তাদের প্রদান করা হতে পারে না যা ইমেজ জন্য সন্ধান!

আমার সমাধান তারপর ছিল:

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;
}

12
2018-01-31 21:43



এটি পুনঃব্যবহারযোগ্য করার জন্য +1 .conf। উপযুক্ত ফোল্ডার nginx/1.14.0 (Ubuntu) মনে হচ্ছে /etc/nginx/snippets/। - Jan Werkhoven


আপনি সর্বোচ্চ মেয়াদ শেষ করতে পারেন। এখানে সিএসএস এবং জেএসের জন্য আমি নির্দেশনা ব্যবহার করি।

# Set css and js to expire in a very long time
location ~* ^.+\.(css|js)$ {
    access_log off;
    expires max;
}

9
2018-06-10 08:41



আমি কেবলমাত্র সার্ভারে {root} নির্দেশিকাটি ব্যবহার করবো, যখন এটি উপ-অবস্থানে এটি ব্যবহার করে তখন এটি অপ্রত্যাশিত পরিণতির দিকে পরিচালিত করে। আপনি বিরতি প্রয়োজন না; হয়, আপনি একটি {} ব্লক না হলে - Dave Cheney
তুমি ঠিক. এই পরিষ্কার করতে ভুলবেন না। এই প্রতিফলিত সম্পাদনা। - Jauder Ho


সমস্ত পূর্বনির্ধারিত সমাধান বিভিন্ন পাথের জন্য বিভিন্ন aliases আছে সম্ভাবনা অস্বীকার করবে। এছাড়াও এক জায়গায় আপনার সমস্ত ক্যাশের মেয়াদ শেষ হওয়ার জন্য আপনাকে নিম্নলিখিত ভাবে nginx মানচিত্র ব্যবহার করতে হবে।

...

# 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 ব্রাউজার সর্বোচ্চ মান তারিখ নির্ধারণ করে।

~ ইমেজ / কোনো ইমেজ মেলে মেলে।

Nginx মানচিত্র সম্পর্কে আরো http://nginx.org/en/docs/http/ngx_http_map_module.html


2
2018-01-04 19:58



উল্লেখ্য যে যদি $sent_http_content_type হয় "text/css;charset=UTF-8" উপরের অভিব্যক্তি ব্যর্থ হবে। - pachanka


আপনার কাছে যদি আপনার সমস্ত স্ট্যাটিক ফাইলগুলির একটি ঘর থাকে তবে এরকম কিছু হবে ...

 location /static {
            your/location/to/static/files/static;
            expires 30d;
            add_header Cache-Control "public";
    }

গ্রহণযোগ্য উত্তর nginx আমার স্ট্যাটিক ফাইল কোন খুঁজে না। সত্যিই কেন নিশ্চিত না, কিন্তু এই একটি সহজ বিকল্প।


0
2018-02-25 03:12





যেহেতু এটি একটি পুরানো থ্রেড, এবং আমি একটি আপ টু ডেট আশ্চর্যজনক টিউটোরিয়াল পাওয়া যায়।

সম্ভবত আপনি এটি চেক আউট করতে চান

উগুন্টু 16.04 এর উপর Nginx এর হেডার মডিউল দিয়ে ব্রাউজার ক্যাশিং কিভাবে প্রয়োগ করবেন


-1
2018-05-04 04:18



সাধারনত, আমরা নিবন্ধগুলি লিঙ্ক করার সাথে সাথে এখানে সামগ্রী অন্তর্ভুক্ত করার জন্যও ভাঙ্গি, লিঙ্কগুলির পরিবর্তন বা মেয়াদ শেষ হওয়ার প্রবণতা রয়েছে। - Unkwntech