2013-02-21 120 views
6

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

मैंने पढ़ा है कि आप सामग्री-प्रकार और कैश-नियंत्रण के लिए हेडर सेट करके इसे प्राप्त कर सकते हैं और ऐसे में, लेकिन मैं इसे काम पर नहीं ला सकता। जाहिर है इसके लिए और भी कुछ है, और शायद यह भी संभव नहीं है। ब्राउज़र हमेशा कैशिंग हेडर सुनने के लिए प्रतीत नहीं होता है।

क्या किसी को पता है कि ब्राउज़र में PHP फ़ाइल को कैश करने की आवश्यकता क्या है?

मैं सभी गतिशील सीएसएस को HTML में स्टाइल-ब्लॉक में नहीं रखना चाहता, और मैं इसके लिए अपाचे कॉन्फ़िगरेशन को बदलना नहीं चाहता हूं। यदि यह वास्तव में संभव नहीं है कि मैं क्या चाहता हूं, तो मैं भी जानना चाहूंगा। धन्यवाद!

+0

क्या कारक है कि स्टाइलशीट को प्रभावित कर रहे हैं? क्या उपयोगकर्ता स्टाइल शीट को कॉन्फ़िगर करने में सक्षम है? या आप एक यादृच्छिक बनाते हैं? –

+0

हमारे सिस्टम में कई मॉड्यूल हैं, और एक केंद्रीय webservice है जो लॉग इन उपयोगकर्ता के लिए कुछ स्टाइल सेटिंग्स देता है। मेरे लिए वे यादृच्छिक हैं, लेकिन स्पष्ट रूप से वे कुछ उपयोगकर्ता विवरण से संबंधित हैं जैसे समूह से संबंधित है। –

+0

ताकि आप अपनी स्टाइल स्क्रिप्ट कहलाते समय PHP सत्र का उपयोग कर सकें? यदि ऐसा है तो यह आपकी समस्या की सबसे अधिक संभावना है। मैं अभी जांच नहीं कर सका, लेकिन अगर मुझे याद है कि सही PHP आपके कैश हेडर को डिफॉल्ट रूप से ओवरराइट करता है तो आप सत्र का उपयोग करते हैं। तो हेडर को जांचें कि ब्राउजर स्टाइलशीट के लिए प्राप्त करता है। –

उत्तर

0

ऐसा लगता है, कृपया जांचें।

Cache Headers for dynamic Css

+0

क्योंकि ऐसा लगता है कि वह उपयोगकर्ता से स्टाइलशीट को अलग करना चाहता है, यह वास्तव में एक अलग सवाल है। और फिर कैश नियंत्रण 'सार्वजनिक' नहीं होना चाहिए लेकिन 'निजी' (http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9.1) –

+0

फिर भी, मैंने यह पृष्ठ देखा है और इसे आजमाया। दुर्भाग्यवश, ब्राउज़र php स्टाइलशीट को पुनर्प्राप्त करता रहता है। –

+0

क्या आपने हेडर का प्रयास किया है ('कैश-कंट्रोल: अधिकतम आयु = 86400') – Ankit

10

इन हेडर ठीक काम करना चाहिए:

$expires = 60*60*24; // how long to cache in secs.. 
header("Pragma: public"); 
header("Cache-Control: maxage=".$expires); 
header('Expires: ' . gmdate('D, d M Y H:i:s', time()+$expires) . ' GMT'); 
header('Content-type: text/css'); 
+0

वर्डप्रेस में गतिशील सीएसएस स्टाइलशीट का उपयोग करके बिल्कुल वही समस्या थी और उपर्युक्त इसे ठीक किया गया था! धन्यवाद :) – ss888