कैसे निर्दिष्ट करें। "वैरी: स्वीकार-एनकोडिंग" हेडर .htaccess में


81

Google PageSpeed ​​का कहना है कि मुझे JS और CSS के लिए "एक वैरी निर्दिष्ट करें: स्वीकार-एनकोडिंग हेडर" चाहिए। मैं इसे कैसे करूँ?


22
निश्चित नहीं है कि यह क्यों बंद किया गया था, सिर्फ इसलिए कि इसमें प्रोग्रामिंग भाषा शामिल नहीं है इसका मतलब यह नहीं है कि यह कोडिंग से संबंधित नहीं है।
ब्लूराजा - डैनी पफ्लुघोटे

@ BlueRaja-DannyPflughoeft मैं सहमत हूं, यह 65100 से अधिक बार देखा गया है, इसलिए मुझे लगता है कि यह एक अच्छी तरह से खोजा गया विषय है जो मैं हर रोज़ htaccess सवालों का जवाब नहीं देता।
पनामा जैक

मुझे पता है कि यह नर्क के रूप में पकड़ है, लेकिन हेडर Vary: Accept-Encodingब्राउज़र को Content-Encodingहेडर के आधार पर पेज के एक संस्करण को कैश में स्टोर करने के लिए बताएगा । आपको stackoverflow.com/questions/1975416/… और Developers.google.com/speed/docs/best-practices/…
Ismael Miguel

2
@IsmaelMiguel यह वास्तव में क्लाइंट (और अधिक महत्वपूर्ण, रास्ते में किसी भी कैशिंग सर्वर) को बताएगा, कि फ़ाइल क्लाइंट के प्रत्येक वेरिएंट के लिए अलग-अलग होती है, सर्वर प्रतिक्रिया हेडर वैल्यू के s प्रत्येक Content-Encodingवेरिएंट के बजाय हेडर-एनकोडिंग `अनुरोध हेडर वैल्यू।
ऐलरोन

@ BlueRaja-DannyPflughoeft क्योंकि बहुत अधिक प्रतिष्ठा वाले उपयोगकर्ता और प्रतिष्ठा प्राप्त करने वाले उपयोगकर्ता बंद करने के लिए प्रश्नों का शिकार करके प्रतिष्ठा बनाते हैं। निराशा होती है कि यह अक्सर सवालों को बंद कर दिया जाता है जो कि नहीं होना चाहिए।
दान निसानबाम

जवाबों:


89

मुझे लगता है कि इसका मतलब है कि आप अपने सीएसएस और जेएस फ़ाइलों के लिए गज़िप संपीड़न को सक्षम करते हैं, क्योंकि यह क्लाइंट को गज़िप-एन्कोडेड सामग्री और एक सादे सामग्री दोनों प्राप्त करने में सक्षम करेगा।

इसे अपाचे 2 में कैसे करें:

<IfModule mod_deflate.c>
    #The following line is enough for .js and .css
    AddOutputFilter DEFLATE js css

    #The following line also enables compression by file content type, for the following list of Content-Type:s
    AddOutputFilterByType DEFLATE text/html text/plain text/xml application/xml

    #The following lines are to avoid bugs with some browsers
    BrowserMatch ^Mozilla/4 gzip-only-text/html
    BrowserMatch ^Mozilla/4\.0[678] no-gzip
    BrowserMatch \bMSIE !no-gzip !gzip-only-text/html 
</IfModule>

और यहाँ Vary Accept-Encodingहैडर को कैसे जोड़ा जाए : [src]

<IfModule mod_headers.c>
  <FilesMatch "\.(js|css|xml|gz)$">
    Header append Vary: Accept-Encoding
  </FilesMatch>
</IfModule>

Vary:शीर्ष लेख है कि सामग्री इस यूआरएल एक निश्चित अनुरोध हेडर के मूल्य के अनुसार अलग अलग होंगे के लिए कार्य किया बताता है। यहाँ यह कहता है कि यह ग्राहकों के लिए अलग-अलग Accept-Encoding: gzip, deflateसामग्री परोसता है जो वे (एक अनुरोध हेडर) कहते हैं, इस हेडर को नहीं भेजने वाले ग्राहकों को दी गई सामग्री की तुलना में। इसका मुख्य लाभ, एएफएआईके, यह है कि इंटरमीडिएट कैशिंग प्रॉक्सिस को यह बताने दें कि उन्हें इस तरह के बदलाव के कारण एक ही यूआरएल के दो अलग-अलग संस्करण होने चाहिए।


मुझे नहीं लगता कि यह है। मेरा JS और CSS पहले से संपीड़ित है। पेजस्पीड अभी भी शिकायत कर रहा है।
StackOverflowNewbie

3
मुझे लगता है कि mod_deflate डिफ़ॉल्ट रूप से वैरी हेडर भेजने वाला है।
मैथ्यू फ्लेशेन

मैंने वही किया है जो आपने ऊपर उल्लेख किया है। .Js फ़ाइलों को अभी भी संपीड़ित नहीं किया जा रहा है।
एंडी एन

@Andy; शायद आपके सर्वर में "mod_deflate.c" मॉड्यूल नहीं है।
एकलोन

3
अपाचे 2.2 को उपरोक्त उत्तर में mod_headers अनुभाग की आवश्यकता नहीं है। mod_deflate को पहले से ही आपकी जरूरत है। httpd.apache.org/docs/2.2/mod/mod_deflate.html
Ari Maniatis

4

मुझे डर है कि इस प्रक्रिया को पूरा करने के लिए Aularon ने पर्याप्त कदम नहीं दिए। थोड़ा परीक्षण और त्रुटि के साथ, मैं अपने समर्पित WHM सर्वर पर सफलतापूर्वक Gzipping को सक्षम करने में सक्षम था।

नीचे चरण दिए गए हैं:

  • WHM के भीतर ईज़ीएप चलाएं, एग्ज़ॉस्टिव ऑप्शन्स लिस्ट में डिफ्लेट चुनें और सर्वर को फिर से बनाएँ।

  • एक बार हो जाने के बाद, गोटो सर्विसेज कॉन्फ़िगरेशन >> अपाचे कॉन्फ़िगरेशन >> संपादक शामिल करें >> पोस्ट वर्चुअलहॉस्ट शामिल करें, सभी संस्करणों का चयन करें, और फिर mod_headers.c और mod_headers.c कोड पेस्ट करें (Aularon के पोस्ट में ऊपर सूचीबद्ध) एक दूसरे के ऊपर। इनपुट क्षेत्र।

  • एक बार सहेजने के बाद, मैं औसतन 75.36% डेटा बचत देख रहा था! आप अपने स्वयं के परिणाम देखने के लिए इस HTTP संपीड़न उपकरण का उपयोग करके परीक्षण से पहले और बाद में चला सकते हैं: http://www.whatsmyip.org/http_compression/

आशा है कि यह आप सभी के लिए काम करता है!

  • मैट

3

के रूप में अच्छी तरह से अपने फ़ॉन्ट फ़ाइलों को बढ़ाने के लिए!

add "x-font/otf x-font/ttf x-font/eot"

जैसे की:

AddOutputFilterByType DEFLATE text/html text/plain text/xml application/xml x-font/otf x-font/ttf x-font/eot

2

स्पष्ट करने के लिए कई घंटे बिताए गए थे। कृपया, उन्नत पाने के लिए इस पोस्ट को पढ़ें.HTACCESS कोड और जानें कि वे क्या करते हैं।

आप उपयोग कर सकते हैं:

Header append Vary "Accept-Encoding"
#or
Header set Vary "Accept-Encoding"

1

यह मुझे पागल कर रहा था, लेकिन ऐसा लगता है कि कर्नल के संपादन के बाद बृहदान्त्र गायब था "Vary"। इसलिए बदल रहा "Vary Accept-Encoding"है"Vary: Accept-Encoding" मेरे लिए इस मुद्दे तय ।

मैंने पोस्ट के नीचे टिप्पणी की होगी, लेकिन ऐसा नहीं लगता कि यह मुझे होने देगा।

किसी भी तरह, मुझे आशा है कि इससे किसी को वही परेशानी होगी जो मुझे हो रही थी।


2
क्या आपको यकीन है कि इससे फर्क पड़ता है? 2.2 डॉक्स में कोई भी उदाहरण कोलोन को शामिल नहीं करता है: httpd.apache.org/docs/2.2/mod/mod_headers.html
निक

1

अगर किसी को NGINXयहाँ विन्यास फाइल के लिए इसकी आवश्यकता है तो वह स्निपेट है:

location ~* \.(js|css|xml|gz)$ {
    add_header Vary "Accept-Encoding";
    (... other headers or rules ...)
}

0

फ़ाइल के संपीड़ित होने पर निर्दिष्ट करने या यहां तक ​​कि जाँचने की कोई आवश्यकता नहीं है, आप इसे प्रत्येक फ़ाइल पर, प्रत्येक अनुरोध पर भेज सकते हैं।

यह डाउनस्ट्रीम परदे के पीछे बताता है कि भविष्य के अनुरोध हेडर से कैसे मिलान किया जाए यह तय करने के लिए कि मूल सर्वर से एक ताजा अनुरोध करने के बजाय कैश्ड प्रतिक्रिया का उपयोग किया जा सकता है या नहीं।

<ifModule mod_headers.c>
  Header unset Vary
  Header set Vary "Accept-Encoding, X-HTTP-Method-Override, X-Forwarded-For, Remote-Address, X-Real-IP, X-Forwarded-Proto, X-Forwarded-Host, X-Forwarded-Port, X-Forwarded-Server"
</ifModule>
  • unsetपुराने GoDaddy होस्टिंग में कुछ कीड़े को ठीक करने के वैकल्पिक है।
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.