2015-03-11 6 views
9

मैं सर्वर पर निम्न विन्यास इस्तेमाल किया मेरी Wildfly सर्वर में GZip कॉन्फ़िगर करने के लिए एक समस्या के साथ कर रहा हूँ पर:,विन्यास GZip Wildfly

<subsystem xmlns="urn:jboss:domain:undertow:1.2"> 
     <buffer-cache name="default"/> 
     <server name="default-server"> 
      <http-listener name="default" socket-binding="http"/> 
      <host name="default-host" alias="localhost"> 
       <location name="/" handler="welcome-content"/> 
       <filter-ref name="gzipFilter" predicate="path-suffix['.css'] or path-suffix['.js'] or path-suffix['.xhtml']"/> 
       <filter-ref name="server-header"/> 
       <filter-ref name="x-powered-by-header"/> 
      </host> 
     </server> 
     <servlet-container name="default"> 
      <jsp-config/> 
      <websockets/> 
     </servlet-container> 
     <handlers> 
      <file name="welcome-content" path="${jboss.home.dir}/welcome-content"/> 
     </handlers> 
     <filters> 
      <response-header name="server-header" header-name="Server" header-value="Wildfly 8"/> 
      <response-header name="x-powered-by-header" header-name="X-Powered-By" header-value="Undertow 1"/> 
      <gzip name="gzipFilter"/> 
     </filters> 
    </subsystem> 

और सही ढंग से अनुरोध की ज़िप फ़ाइल बन गया लेकिन मैं चाहूँगा फाइलों को ज़िप्प करने के लिए न्यूनतम आकार सेट करने के लिए और जो भी मैं कठिन हूं, किसी को पता है कि सर्वर के लिए न्यूनतम आकार कैसे सेट करना है, उन्हें पहले ग्राहक को भेजना है?

उत्तर

4

अंडरटो मिनट जो सामग्री पर आकार में एक विधेय तो आप उपयोग कर सकते हैं predicate=min-content-size[500]

documenation

9

मैं कुछ किया सिकंदर के जवाब पर विस्तार की कमी के कारण मैं यहाँ https://github.com/undertow-io/undertow/tree/master/core/src/main/java/io/undertow/predicate उपलब्ध विधेय पाया है परीक्षण। 500 बाइट्स के बाद बड़ी फ़ाइलों को केवल संकुचित करने के लिए आश्चर्यजनक रूप से पर्याप्त not min-content-size[500] है।

jboss-cli.sh रन इस स्क्रिप्ट का उपयोग यह कॉन्फ़िगर करें:

/subsystem=undertow/configuration=filter/gzip=gzipFilter:add() 
/subsystem=undertow/server=default-server/host=default-host/\ 
    filter-ref=gzipFilter:add(predicate="not min-content-size[500]") 

ध्यान दें कि gzip फिल्टर सर्वर फिर से लोड करने के बाद काम शुरू कर देंगे। आप इसे क्ली के कमांड :reload का उपयोग करके कर सकते हैं।

परीक्षण करने के लिए करता है, तो फिल्टर सक्षम किया गया है मैं प्रयोग किया है:

wget $MY_URL -S --header="accept-encoding: gzip" \ 
    -O /dev/null 2>&1| grep Content-Encoding 
+2

** अद्यतन **: Wildfly 10 चेतावनी के तहत जब आप का उपयोग 'विधेय [value]' पता चलता है। आपको 'predicate (value)' में बदलना चाहिए। लेकिन, वाइल्डफ्लाई 9 'predicate (value)' स्वीकार नहीं करता है, यह एक पारस्परिक अपवाद उठाता है। 'भविष्यवाणी को परिभाषित करने के लिए पुरानी स्टाइल स्क्वायर ब्रेसिज़ का उपयोग नहीं करता है [2048] न्यूनतम सामग्री वर्ग ब्रेसिज़ का उपयोग नहीं करता है, जिसे भविष्य में रिलीज में हटा दिया जाएगा। अनुमानित करें [मान] को predicate (value) ' –

+1

' न्यूनतम-सामग्री-आकार [500] 'सामग्री-लंबाई "शीर्षलेख के साथ काम करना चाहिए। यदि यह अस्तित्व में नहीं है, तो यह अनुमान झूठा रिटर्न देता है। तो 'न्यूनतम सामग्री-आकार [500]' का अर्थ है: gzip लागू करें अगर प्रतिक्रिया में सामग्री-लंबाई> 500 है या प्रतिक्रिया सामग्री-लंबाई शीर्षलेख नहीं है। भविष्यवाणी के अंतिम भाग को बदलने के लिए आप इसे 'मौजूदा ['% {o, सामग्री-लंबाई} '] में बदल सकते हैं और न्यूनतम सामग्री-आकार [500] 'या' अधिकतम-सामग्री-आकार [500] ' । – McGiogen