2011-10-18 11 views
10

मैं सशर्त रूप से कैश हेडर सेट करना चाहता हूं कि किस पथ फ़ाइलों से पहुंचा जा सकता है। असल में, http://www.example.com/cache/$cache_key/* तक पहुंचने से भविष्य में कैश हेडर में फ़ाइलों को सेवा देना चाहिए।सशर्त रूप से अपाचे में कैश हेडर सेट करना

मैं पर्यावरण चर सेट करने के लिए एक पुनःलेखन नियम का उपयोग कर रहा हूं और उसके बाद उस चर के आधार पर कैश नियंत्रण शीर्षलेख सेट करने का प्रयास कर रहा हूं। हालांकि, ऐसा लगता है कि चर या प्रक्रिया में कुछ देर हो चुकी है; सशर्त हेडर नियम कभी निष्पादित नहीं होते हैं।

RewriteRule ^cache/.*?/(.*) /$1 [env=asset:true,L] 
Header set Cache-control "max-age=30" 
Header set Cache-Control "max-age=31536000" env=asset 
Header unset ETag env=asset 

क्या ऐसा करने का कोई बेहतर तरीका है? मैंने बिना किसी सफलता के निर्देशिका और स्थान ब्लॉक के कुछ संयोजनों की कोशिश की है।

उत्तर

19

phpinfo() का उपयोग करके मैंने पर्यावरण परिवर्तनीय अंतराल को फिर से लिखे गए अनुरोध पर सेट नहीं किया है, इसलिए समस्या अनुरोध का आदेश नहीं है, ऐसा लगता है कि यह परिवर्तनीय आउट को टॉस करना प्रतीत होता है। URL की बजाय क्वेरी स्ट्रिंग का उपयोग करना और पुनर्लेखन एकमात्र तरीका प्रतीत होता है जिसे मैं यह काम कर सकता हूं। मैं सहमत हूं, ऐसा लगता है कि एक बेहतर तरीका होना चाहिए।

RewriteCond %{QUERY_STRING} longcache=true(&|$) 
RewriteRule .* - [ENV=LONGCACHE:true,L] 

Header set Cache-Control "max-age=30" env=!LONGCACHE 
Header set Cache-Control "max-age=31536000" env=LONGCACHE 

अधिक अलग जवाब उद्घाटन आंखों के द्वारा प्राप्त की गई:

आपका asset वातावरण चर रीडायरेक्ट के बाद REDIRECT_asset नाम दिया जाता है, तो अपने सशर्त हैडर निर्देश की जरूरत है:

Header set Cache-Control "max-age=31536000" env=REDIRECT_asset 
+1

हाँ, वह था, REDIRECT_asset, उसके लिए धन्यवाद। – regilero

+0

धन्यवाद, किसी भी तरह से मुझे याद आया कि इसका उत्तर दिया गया था। – mike

संबंधित मुद्दे