সেরা এনগিনেক্স সংক্ষেপণ জিজিপ স্তরটি কী?


44

আমি জিজিপ সক্ষম করে এনগিনেক্স বিপরীত প্রক্সি ক্যাশে ব্যবহার করছি। তবে আমি আমার রেল জেএসএন ওয়েব পরিষেবাদিতে অ্যানড্রয়েড অ্যাপ্লিকেশন এইচটিটিপি-অনুরোধ থেকে কিছু সমস্যা পেয়েছি। দেখে মনে হচ্ছে যখন আমি বিপরীত প্রক্সি ক্যাশে বন্ধ করি তখন এটি ঠিক কাজ করে কারণ প্রতিক্রিয়া শিরোনাম জিজপ ছাড়াই আসে। অতএব, আমি মনে করি সমস্যাটি জিজিপ দ্বারা সৃষ্ট। জিজিপ সংক্ষেপণের সবচেয়ে উপযুক্ত স্তরটি কী?

gzip               on;
gzip_http_version  1.0;
gzip_vary          on;
gzip_comp_level    6;
gzip_proxied       any;
gzip_types         text/plain text/css text/javascript application/javascript application/json application/x-javascript text/xml application/xml application/xml+rss;

উত্তর:


18

জিজিপ সংকোচনের স্তরটি কেবল নির্ধারণ করে যে ডেটাটি সংকুচিতভাবে 1-9 থেকে স্কেল হয় যেখানে 9 সবচেয়ে সংকোচিত হয়। ট্রেড অফটি হ'ল সর্বাধিক সংকুচিত ডেটাগুলির জন্য কমপ্রেস / ডিকম্প্রেস করার জন্য সবচেয়ে বেশি কাজ করা প্রয়োজন, তাই যদি আপনি এটি একটি উচ্চ-ভলিউমের ওয়েবসাইটে মোটামুটি উচ্চভাবে সেট করেন তবে আপনি এর প্রভাব অনুভব করতে পারেন।

মনে হচ্ছে আপনার সমস্যাগুলি অনুরোধের HTTP শিরোনামগুলির সাথে আরও সম্পর্কিত। সাধারণত gzip- সংকুচিত HTTP ট্র্যাফিক Content-Encoding: gzipশিরোনাম সহ হয় । যদি এটি অন্য কোথাও ফেলে দেওয়া হয়, তবে ক্লায়েন্ট হয়ত প্রতিক্রিয়াটি সঙ্কুচিত করতে হবে তা জানবেন না।


ক্লায়েন্টের থেকে http অনুরোধ শিরোনাম ব্যবহার করে জিজিপ প্রতিক্রিয়া কীভাবে অক্ষম করবেন? আমি স্বীকৃতি-এনকোডিং চেষ্টা করছি: '', কিন্তু এটি কার্যকর হয় না।
চামনাপ

আরএফসি 2616 থেকে ( w3.org/Protocols/rfc2616/rfc2616-sec14.html ) আমি মনে করি আপনি নিম্নলিখিত কোনও কিছুই ছাড়াই 'স্বীকৃতি-এনকোডিং:' চান want
growse

হ্যাঁ, আমি মজিলায় পোস্টার অ্যাডন সহ খালি স্ট্রিং সহ শিরোনাম গ্রহণ করুন-এনকোডিং এবং সামগ্রী-এনকোডিং ছাড়াই প্রতিক্রিয়া ফিরে পেয়েছি: 'জিজিপ'। যাইহোক, অ্যান্ড্রয়েড অ্যাপে এটি সর্বদা gzip এ ফিরে আসে। আমি প্রক্সি ক্যাশে ডিরেক্টরিগুলিতে কী ক্যাশে হয়েছে তা যাচাই করেছি, এনজিনেক্স জিজপ সামগ্রীকে ক্যাশে করে, তাই সম্ভবত এটি জিপিপ-এ প্রতিক্রিয়া রয়েছে। কীভাবে সমাধান করবেন?
চামনাপ

কিছু উত্স প্রস্তাব দেয় যে সংকোচনের স্তর বৃদ্ধি হওয়ার সাথে সাথে ডেকম্প্রেশন সংস্থানগুলি বাড়বে না। সংকোচনের স্তর বৃদ্ধি পাওয়ার সাথে সংস্থানগুলি আসলে কিছু ক্ষেত্রে হ্রাস পায়। stackoverflow.com/questions/28452429/...
user2208096

90

আমি এটিকে দুটি ফাইলের সাথে এনজিনেক্স ১.৩.৯ এর অধীনে পরীক্ষা করেছি এবং বিভিন্ন স্তরের জন্য এগুলি আমি পেয়েছি ফলাফল:


text/html - phpinfo ():

0    55.38 KiB (100.00% of original size)
1    11.22 KiB ( 20.26% of original size)
2    10.89 KiB ( 19.66% of original size)
3    10.60 KiB ( 19.14% of original size)
4    10.17 KiB ( 18.36% of original size)
5     9.79 KiB ( 17.68% of original size)
6     9.62 KiB ( 17.37% of original size)
7     9.50 KiB ( 17.15% of original size)
8     9.45 KiB ( 17.06% of original size)
9     9.44 KiB ( 17.05% of original size)

application/x-javascript - jQuery 1.8.3 (অসম্পূর্ণ):

0    261.46 KiB (100.00% of original size)
1     95.01 KiB ( 36.34% of original size)
2     90.60 KiB ( 34.65% of original size)
3     87.16 KiB ( 33.36% of original size)
4     81.89 KiB ( 31.32% of original size)
5     79.33 KiB ( 30.34% of original size)
6     78.04 KiB ( 29.85% of original size)
7     77.85 KiB ( 29.78% of original size)
8     77.74 KiB ( 29.73% of original size)
9     77.75 KiB ( 29.74% of original size)

আমি নিশ্চিত যে এটি কতটা প্রতিনিধি তবে এটি একটি উদাহরণ হিসাবে কাজ করা উচিত। এছাড়াও, আমি সিপিইউ ব্যবহারটি আমলে নিই নি তবে এই ফলাফলগুলি থেকে আদর্শ সংকোচনের স্তরটি মনে হয় 4এবং এর মধ্যে রয়েছে 6


অতিরিক্ত হিসাবে, আপনি যদি gzip_staticমডিউলটি ব্যবহার করেন তবে আপনি নিজের ফাইলগুলি (পিএইচপিতে) প্রাক-সংকোচিত করতে চাইতে পারেন:

function gzip_static($path)
{
    if ((extension_loaded('zlib') === true) && (is_file($path) === true))
    {
        $levels = array();
        $content = file_get_contents($path);

        foreach (range(1, 9) as $level)
        {
            $levels[$level] = strlen(gzencode($content, $level));
        }

        if ((count($levels = array_filter($levels)) > 0) && (min($levels) < strlen($content)))
        {
            if (file_put_contents($path . '.gz', gzencode($content, array_search(min($levels), $levels)), LOCK_EX) !== false)
            {
                return touch($path . '.gz', filemtime($path), fileatime($path));
            }
        }
    }

    return false;
}

এটি আপনাকে প্রতিটি অনুরোধে সিপিইউ ত্যাগ না করে সেরা সম্ভাব্য সংক্ষেপণ পেতে দেয়।



6

আপনি যদি সত্যই সিপিইউ সংস্থানগুলি বাঁচাতে পারেন তবে আপনি 9 টি ব্যবহার করতে পারেন তবে বেশিরভাগ সাইটের জন্য 2 এর মানই যথেষ্ট, যেহেতু gzip ফাইলটি 1 স্তরের পরে খুব বেশি হ্রাস করে না।

সম্পাদনা: আমি অ্যামাজন ক্লাউডফ্রন্টের দিকে তাকিয়েছি এবং এটি লেভেল 6 ব্যবহার করছে বলে মনে হচ্ছে, সম্ভবত যে স্তরটি একসাথে দ্রুত ছড়িয়ে পড়ে, ফলে পৃষ্ঠাটি রেন্ডার কার্যকারিতা উন্নত করে।


এটি সঠিক নয়
কলম্ব্রডি

2
মেঘ আপনি ব্যাখ্যা করেন যে এতে কী ভুল? যাইহোক, আমি উত্তরটি আপডেট করেছি, আমি আরও কিছুটা গবেষণা করেছি এবং আমি দেখতে পাচ্ছি যে অ্যামাজন ক্লাউডফ্রন্টের মতো সাইটগুলি 6 এর একটি সংকোচনের স্তর ব্যবহার করে, সম্ভবত এটি ডিকম্প্রেশন গতির সর্বোত্তম কারণ (এভাবে পৃষ্ঠাগুলি দ্রুত লোড হবে)।
দিয়েগোজি

1) 2 এবং 6 এর মধ্যে পার্থক্যটি নগণ্য নয়, এটি 10-15% পর্যন্ত হতে পারে, ডেটা দেখুন বা নিজে চেষ্টা করুন। 2) কম্প্রেশন মাত্রা ডিকম্প্রেস করতে অসুবিধা প্রভাবিত করে না (দেখুন stackoverflow.com/questions/28452429/... )
calumbrodie

0

আপনার যদি উচ্চ ভলিউম ওয়েবসাইট রয়েছে এবং এখনও আপনার সম্পূর্ণ স্তরের (9) সংক্ষেপণ থাকতে চান তবে সেরা ধারণাটি হ'ল আপনার স্ট্যাটিক সামগ্রীটি অ্যামাজন এস 3 বা অনুরূপ অবজেক্ট স্টোরেজ পরিষেবাগুলিতে রাখা এবং সংক্ষেপিত ফাইলগুলি আপলোড করা উচিত।

আপনি এখনও আপনার এইচটিএমএলকে সংকোচনের জন্য এনজিনেক্স ব্যবহার করতে চান, সেই মানটিকে স্বাভাবিক রাখতে আরও ভাল, আমি সেখানে 5 ব্যবহার করি।


আমি আপনার পরামর্শটি ব্যবহার করতে চাই, তবে আমি বর্তমানে comp_levelআমার কনফিগারেশনে একটি অন্তর্ভুক্ত করি নি, তাই আমি বর্তমানে কোন স্তরে আছি তা বলতে পারি না। আপনি কি জানেন যে ডিফল্টগুলি কী? উৎস?
হাসান বৈগ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.