Apache / 2.2.20 (Ubuntu 11.10) gzip कम्प्रेशन php पृष्ठों पर काम नहीं करेगा, सामग्री chunked है


5

मैं एक नए उत्पादन सर्वर के साथ एक समस्या में चल रहा हूँ जो मैं परियोजनाओं को स्थानांतरित कर रहा हूँ। PHP अनुप्रयोगों का HTML आउटपुट Apache mod_deflate मॉड्यूल द्वारा संपीड़ित नहीं है। अन्य संसाधन, स्टाइलशीट और जावास्क्रिप्ट फ़ाइलों के रूप में, यहां तक ​​कि HTML पृष्ठ, जो PHP आउटपुट के रूप में एक ही सामग्री-प्रकार (पाठ / HTML) के साथ परोसे जाते हैं, संकुचित होते हैं!

परियोजनाएं .htaccess में निम्नलिखित नियमों (HTML5 बॉयलरप्लेट से) का उपयोग करती हैं:

<IfModule mod_deflate.c>
  # मैनगल्ड हेडर्स के लिए फोर्स डिफॉल्ट डेवलपर .yahoo.com/blogs/ydn/posts/2010/12/pushing-beyond-gzipping/
  <IfModule mod_setenvif.c>
    <IfModule mod_headers.c>
      SetEnvIfNoCase ^ (Accept-EncodXng | X-cept-Encoding। 3 {15} | ~ {15} | - {15}) $ ^ ((gzip | deflate) \ _ *,? S *) + | [X ~ -] {4,13} $ HAVE_Accept-Encoding
      RequestHeader स्वीकार-एन्कोडिंग "गज़िप, डिफ्लेट" env = HAVE_Accept-Encoding
    </ IfModule>
  </ IfModule>

  # HTML, TXT, CSS, JavaScript, JSON, XML, HTC:
  <IfModule filter_module>
    FilterDeclare COMPRESS
    FilterProvider कम्‍प्‍यूट डिप्‍लीट रिस्‍पॉन्‍ट = Content-Type $ text / html
    FilterProvider कम्‍प्‍यूट डिप्‍लीट रिस्‍पॉन्‍ट = Content-Type $ text / css
    FilterProvider कम्‍प्‍यूटरी डिफाल्‍ट सम्‍मान = सामग्री-प्रकार $ पाठ / सादा
    FilterProvider कम्‍प्‍यूटरी डिफाल्‍ट सम्‍मान = सामग्री-प्रकार $ पाठ / xml
    FilterProvider कम्‍प्‍यूटरी डिफाल्‍ट सम्‍मान = सामग्री-प्रकार $ पाठ / x- घटक
    FilterProvider कम्‍प्‍यूटरी डिफाल्‍ट सम्‍मान = सामग्री-प्रकार $ एप्लिकेशन / जावास्क्रिप्ट
    FilterProvider कम्‍प्‍यूट डिपॉजिट रिस्‍पॉन्‍ट = सामग्री-प्रकार $ एप्लिकेशन / json
    FilterProvider कम्‍प्‍यूटरी डिफाल्‍ट सम्‍मान = सामग्री-प्रकार $ एप्लिकेशन / xml
    FilterProvider कम्‍प्‍यूटर डिफाल्‍ट सम्‍मान = सामग्री-प्रकार $ एप्लिकेशन / xhtml + xml
    FilterProvider कम्‍प्‍यूटरी डिफाल्‍ट सम्‍मान = सामग्री-प्रकार $ एप्लिकेशन / rss + xml
    FilterProvider कम्‍प्‍यूटरी डिफाल्‍ट सम्‍मान = सामग्री-प्रकार $ एप्लिकेशन / परमाणु + xml
    FilterProvider कम्‍प्‍यूटरी डिफाल्‍ट सम्‍मान = सामग्री-प्रकार $ एप्लिकेशन / vnd.ms-fontobject
    FilterProvider COMPRESS DEFLATE resp = सामग्री-प्रकार $ छवि / svg + xml
    FilterProvider कम्‍प्‍यूटर डिफाल्‍ट सम्‍मान = सामग्री-प्रकार $ छवि / x-icon
    FilterProvider कम्‍प्‍यूटरी डिफाल्‍ट सम्‍मान = सामग्री-प्रकार $ एप्लिकेशन / x-font-ttf
    FilterProvider कम्‍प्‍यूटरी डिफाल्‍ट सम्‍मान = सामग्री-प्रकार $ फॉन्ट / ऑप्‍पेन्‍टाइप
    फ़िल्टरचैन कम्पास
    FilterProtocol COMPRESS DEFLATE परिवर्तन = हाँ; byteranges = नहीं
  </ IfModule>
 </ IfModule>                                                                                                                                                                 

हमारे पास एक परीक्षण मशीन है जो समान Apache, OS और PHP संस्करण चलाती है। उस मशीन पर कंप्रेशन PHP आउटपुट पर ठीक काम करता है। मैंने अपाचे और पीएचपी कॉन्फिग फाइलों की जाँच की और उनकी तुलना की है, जहाँ तक मैं बता सकता हूँ।

मैंने PHP की सामग्री को आउटपुट करने, आउटपुट बफ़रिंग का उपयोग करके या सामग्री को सीधे सादा करने के कई शिष्टाचार आज़माए हैं। एक ही बात, कोई संपीड़न नहीं।

एक PHP आउटपुट का उदाहरण प्रतिक्रिया हेडर:

HTTP / 1.1 200 ठीक है
दिनांक: बुध, २५ अप्रैल २०१२ २३:३०:59 जीएमटी
सर्वर: अपाचे
स्वीकार-रंग: बाइट्स
अवसान: थू, 19 नवंबर 1981 08:52:00 GMT
कैश-कंट्रोल: जनता
प्रज्ञा: नो-कैश
वैरी: यूजर-एजेंट
कीप-अलाइव: टाइमआउट = ५, अधिकतम = ९ time
कनेक्शन: कीप-अलाइव
स्थानांतरण-एन्कोडिंग: chunked
सामग्री-प्रकार: पाठ / html; charset = utf-8

एक सीएसएस फ़ाइल पर प्रतिक्रिया हेडर का उदाहरण:

HTTP / 1.1 200 ठीक है
दिनांक: बुध, २५ अप्रैल २०१२ २३:३०:59 जीएमटी
सर्वर: अपाचे
अंतिम-संशोधित: सोम, 04 जुलाई 2011 19:12:36 GMT
वैरी: स्वीकार-एनकोडिंग, उपयोगकर्ता-एजेंट
सामग्री-एनकोडिंग: gzip
कैश-कंट्रोल: जनता
अवसान: शुक्र, 25 मई 2012 23:30:59 GMT
सामग्री-लंबाई: 714
कीप-अलाइव: टाइमआउट = ५, अधिकतम = १००
कनेक्शन: कीप-अलाइव
सामग्री-प्रकार: पाठ / सीएसएस; charset = utf-8

क्या किसी को कोई सुराग है या उसी "समस्या" का अनुभव हुआ है?

धन्यवाद!

जवाबों:


1

यदि अपाचे यह नहीं बता सकता है कि लौटी हुई सामग्री कितनी बड़ी है, तो यह स्वचालित रूप से चिपके हुए एन्कोडिंग का सहारा लेगा । आपके PHP स्क्रिप्ट को कैसे चलाया जा रहा है (CGI, FastCGI, इत्यादि) के आधार पर, अपाचे उस सामग्री के आकार को नहीं जान सकता है जब वह उपयोगकर्ता को वापस लौटना शुरू करता है। यानी, यदि आपके पास यह संपूर्ण स्क्रिप्ट में सामग्री का उत्पादन कर रहा है, तो वह उस डेटा को क्लाइंट के बफर में तुरंत लिख सकता है।

स्टैटिक फाइल्स के साथ काम करने का कारण यह है क्योंकि अपाचे ने इसका आकार तब जाना जब इसे वापस करना शुरू किया। यह आपके अपाचे / पीएचपी विन्यास के साथ एक मुद्दे की ओर इशारा कर सकता है (यानी, यह स्क्रिप्ट से पल आउटपुट को वापस लिखना शुरू करता है), या आपकी स्क्रिप्ट स्वयं कैसे काम करती है।

दूसरे शब्दों में, यह अपनी समस्या को PHP या आपके Apache / PHP कनेक्टर की तरह लगता है, साथ नहीं mod_deflate


आपके उत्तर के लिए धन्यवाद। मैंने बस उत्पादन सर्वर पर PHP और अपाचे (SAPI) के बीच इंटरफ़ेस की जाँच की, और यह 'apache2filter' दिखाता है। परीक्षण पर यह 'apache2handler' दिखाता है। शायद उसका इस से कोई सम्बंध हो?
फेमसइंटरएक्टिव

उत्पादन सर्वर पर, अपाचे को 'mpm_itk' के साथ संकलित किया गया है, क्या वह हस्तक्षेप कर सकता है?
फेमसइंटरएक्टिव

के लिए apache2filter/ apache2handler, मुझे नहीं पता है। यह PHP SAPI इंटरफ़ेस का एक हिस्सा है, जिसे मैं विशेष रूप से परिचित नहीं हूँ। जहाँ तक mpm_itkजाता है, यह इस विशेष मुद्दे को प्रभावित नहीं करना चाहिए।
एंड्रयू एम।

-1

कृपया जांचें कि क्या PHP आउटपुट का संपीड़न सक्षम है। यह php.ini फ़ाइल में या रन-टाइम निर्देशन के माध्यम से किया जा सकता है। अधिक विवरण के लिए प्रलेखन की जाँच करें ।


1
मैं PHP को सम्पीडन को संभालने नहीं दे रहा था। मुझे लगता है कि अपाचे को इसे संभालने देना एक बेहतर अभ्यास है। इसका परिणाम बेहतर प्रदर्शन होना चाहिए और इस तरह न केवल PHP आउटपुट संपीड़ित होता है। वैसे भी, अभी भी समस्या का हल नहीं मिला है।
प्रसिद्धइंटरएक्टिव

@JensBradler वे कुल अलग-अलग चीजें हैं, अपाचे संपीड़न करने में भी सक्षम है, जो एक बेहतर, क्लीनर समाधान है।
पेटेर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.