কখন Nginx- এ সেন্ডফিল চালু / বন্ধ ব্যবহার করবেন বা করবেন না?


12

আমাদের nginx.confবেশ কিছুক্ষণের জন্য এই সেটিংটি রয়েছে ।

sendfile on;

যখন আমরা একটি ফাইল আপডেট করেছি /js/main.jsএবং ব্রাউজার https://test.com/js/main.js?newrandomtimestamp থেকে অ্যাক্সেস করেছি , তখনও এটি আমাদের পুরানো সংস্করণটি লোড করবে যদি না আমরা আমাদের ব্রাউজার থেকে সম্পূর্ণ রিফ্রেশ (পরিষ্কার ক্যাশে) না করি।

কিন্তু যখন আমরা প্রেরণ ফাইল থেকে সেটিংস পরিবর্তন করি; to sendfile off; ব্রাউজার আপডেট হওয়া ফাইলটির সঠিক সংস্করণটি লোড করবে।

আমাদের প্রোডাকশন ওয়েব সার্ভারের জন্য, আমাদের প্রেরণ ফাইলটি চালু করা উচিত; বা সেন্ডফিল বন্ধ আছে ?? যদি সেন্ডফিল চালু থাকে; প্রয়োজনীয় (উন্নততর ক্যাশিংয়ের কারণে মে? আরও দ্রুত পারফরম্যান্স?) তাহলে উপরে বর্ণিত সমস্যাটি কীভাবে সমাধান করবেন?

নীচে nginx.confআমাদের উত্পাদন সার্ভারে রয়েছে এবং আমরা সংস্করণ 1.7.5 ব্যবহার করছি:

user  nginx;
worker_processes  2;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;
worker_rlimit_nofile 51200;

events {
    use epoll;
    worker_connections  51200;
}

http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    client_max_body_size 8m;
    sendfile        on;
    keepalive_timeout  65;

    real_ip_header X-Forwarded-For;
    set_real_ip_from 0.0.0.0/0;
    large_client_header_buffers 4 32k;

    gzip on;
    gzip_min_length 1k;
    gzip_buffers 4 16k;
    gzip_http_version 1.1;
    gzip_comp_level 2;
    gzip_types text/plain application/x-javascript application/javascript text/css application/xml application/json;
    gzip_vary on;


    include /etc/nginx/conf.d/*.conf;
}

জিনিসগুলিকে আরও সহজ করার জন্য, আমরা প্রতিবার যখন আমাদের প্রোডাকশন সার্ভারে নতুন ফাইল স্থাপন করেছি তখন কি আমাদের nginx পুনরায় চালু করা উচিত? যদি আমরা এনজিনেক্স পুনরায় চালু করতে না চাই, তবে আমরা কীভাবে এনজিনেক্স ক্যাশে সাফ করতে পারি? (ধরে নেওয়া যদি সেন্ডফিল চালু থাকে; ক্যাশের সাথে সম্পর্কিত)
বনভূমি

আপনার এনগিনেক্স কি কোনও ধরণের ভার্চুয়াল পরিবেশে রয়েছে (ভার্চুয়ালবক্সের মতো)?
অ্যালেক্সি টেন

আমাদের প্রযোজনা সার্ভারটি অ্যামাজন ইসি 2
ফরেস্টকাউন

sendfileভার্চুয়ালবক্স ড্রাইভ সম্পর্কে বেশ কয়েকটি বাগ রিপোর্ট রয়েছে (যেমন ভার্চুয়ালবক্স.আর / টিকেট / ৮৯১ )। অ্যামাজনের ক্ষেত্রেও একই সমস্যা হতে পারে।
অ্যালেক্সি টেন

আপনি এই অভ্যন্তরীণ ক্যাশেটি এখানে আঘাত করছেন বলে ওপেন-ফাইল_ক্যাশের কনফিগারেশন সেটিংস পরীক্ষা করে দেখুন। আপনি এটি সম্পূর্ণরূপে অক্ষম করতে পারেন বা টিটিএল হ্রাস করতে পারেন (ওপেন_ফাইলে_ক্যাচি_অডিয়ালিটি)। আপনি এখানে আরও বিশদ পাবেন: nginx.org/en/docs/http/… ভার্চুয়ালবক্সের সাথে যুক্ত উল্লিখিত সমস্যাগুলি নির্দিষ্ট ফাইল সিস্টেম VBOXSF এর কারণে হয় তবে এখানে এটি হওয়া উচিত নয়। অন্যান্য জ্ঞাত সমস্যাগুলি এনএফএস ফাইল সিস্টেমের সাথে লিঙ্কযুক্ত যা এটি এখানেও নেই।
জেনস ব্র্যাডলার

উত্তর:


1

আপনার অ্যাপ্লিকেশন পর্যায়ে ফাইল ক্যাচিংয়ের সমস্যার সমাধান হতে পারে। এটি জাভাস্ক্রিপ্ট বিকাশের বিশ্বে একটি সুপরিচিত সমস্যা। সমাধানটিকে সাধারণত "আউটপুট হ্যাশিং" এর মতো কিছু বলা হয়।

প্রাথমিক ধারণাটি ফাইলের নামের সাথে ফাইলের সামগ্রীর একটি হ্যাশ যুক্ত করা যাতে ফাইলটিকে "নতুন" হিসাবে বিবেচনা করা হয় এবং ক্যাশে পাওয়া যায় না found

কৌণিক এটি নির্মাণের সময় করে (দেখুন --outputHashing:)।


1

... যদি না আমরা আমাদের ব্রাউজার থেকে একটি সম্পূর্ণ রিফ্রেশ (পরিষ্কার ক্যাশে) না করি।

এটি নিজেই, একটি স্পষ্ট প্রকাশ যা "সমস্যা" ক্লায়েন্টের পক্ষে।

sendfile ক্যাশিংয়ের সাথে কিছুই করার নেই, কেবল এনজিআইএনএক্স কীভাবে ফাইলটি বাফার করে / পড়বে (সরাসরি নেটওয়ার্ক "স্লট" এ বিষয়বস্তু স্টাফ করার চেষ্টা করছে, বা প্রথমে এর সামগ্রীগুলি বাফার করবে)।

শুধুমাত্র যুক্তিসঙ্গত ব্যাখ্যা ছিল যে আপনার নির্দিষ্ট ব্রাউজার পরিত্যাগ হয় ?newrandomtimestampমান ছাড়া একটি প্যারামিটার হিসাবে, তাই এটা হয় জন্য একই ক্যাশে সংস্থান লোড হচ্ছে example.com?blahএবং example.com?boo

আপনি যদি একবার চেষ্টা করে দেখুন, তবে https://example.com/js/main.js?v=newrandomtimestampস্কিম, প্রত্যেকবার নতুন সামগ্রী দেওয়া উচিত


0

আপনি সিএসএনও এই ফাইলটি ক্যাচিংয়ের বাইরে রাখার মতো ব্যবহার করবেন না

 location updater/serversettings.xml {
        expires -1;
        add_header 'Cache-Control' 'no-store, no-cache, 
 must-revalidate, proxy-revalidate, max-age=0';
    }
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.