मेरी सीएसएस फ़ाइल एक PHP फ़ाइल है जो सामग्री-प्रकार text/css
के साथ परोसा जाता है ताकि मैं उस फ़ाइल में PHP चर का उपयोग कर सकूं। style.php
इस तरह दिखता है:गतिशील सीएसएस (PHP के माध्यम से जेनरेट) के लिए कैश हेडर
<?php
header('Content-Type: text/css');
$bgColor = '#000';
?>
body { background:<?php print $bgColor; ?>; }
यह काम करता है के रूप में उम्मीद है, लेकिन ब्राउज़र डायनामिक रूप से तैयार सीएसएस फ़ाइल कैश करता है, तो मैं थोड़ा चिंतित हूँ।
फ़ायरबग में अनुरोधों को देखते समय, मुझे लगता है कि ब्राउजर style.php
नया लोड करता है जब भी मैं पृष्ठ को पुनः लोड करता हूं।
मैं पहले से ही इन कैश हेडर जोड़ने की कोशिश की:
header('Cache-control: must-revalidate');
header('Expires: ' . gmdate('D, d M Y H:i:s', time() + 60 * 60 * 24) . ' GMT');
लेकिन कोई भाग्य। पृष्ठ लोड होने पर भी फ़ाइल लोड हो जाती है। ब्राउज़र को निश्चित समय के लिए फ़ाइल को कैश करने के लिए मजबूर करने के लिए उचित शीर्षलेख क्या हैं?
HTTP/1.1 कल्पना के अनुसार, कि क्या करना चाहिए सत्यापित करें मतलब माना जाता है नहीं है - यह केवल में किक करने के बाद कैश की गई सामग्री बासी हो गया है (के रूप में समाप्त हो रहा है द्वारा निर्देशित चाहिए था शीर्षलेख, या कैश-कंट्रोल के भीतर अधिकतम आयु मान), लेकिन कुछ ब्राउज़र spec को अनदेखा करते हैं और अनुरोध को वैसे भी भेजते हैं। 'सार्वजनिक' वास्तव में लागू नहीं है, हालांकि, कनेक्शन प्रमाणीकृत होने तक। मैं समाप्ति शीर्षलेख में समय को मजबूत करने के लिए 'कैश-कंट्रोल: अधिकतम आयु = 86400' का उपयोग करूंगा। –
@ ब्रॉक बैटसेल: टिप्पणी के लिए धन्यवाद! यह स्पष्ट करता है और यह अब अधिकतम आयु = XXXX – Max
के साथ काम करता है यदि फ़ाइल सामग्री बदल दी गई है, तो अनुरोध की गई फ़ाइल अपडेट नहीं की जाएगी। ओपी अनुरोध करता है कि अगर सामग्री बदली जाती है तो फ़ाइल को कैश नहीं किया जाना चाहिए। अगर फ़ाइल सामग्री नहीं बदली है, तो इसे कैश किया जाना चाहिए। आपके द्वारा प्रदान किया गया कोड "कैशिंग" सुविधा पर बदल जाता है। यह ओपी की समस्या को हल नहीं करता है। –