2010-01-06 17 views
5
<script type="text/javascript" src="test.php"></script> 

पहली बार मैं उस पृष्ठ पर जाते test.php का दौरा नहीं है,यह कब होगा?

लेकिन अगर मैं पेज को ताज़ा, यह रन मिल जाएगा।

क्या तुमने कभी यह अनुभव किया है?

+4

ऐसा इसलिए है क्योंकि यह कैश किया गया है। –

उत्तर

9

जब test.php स्थानीय या दूर कैश किया गया है यह नहीं होगा।

+0

यदि यह बस है, तो test.php पहली बार नहीं देखा जाना चाहिए और बिल्कुल ताज़ा होने पर नहीं? – catchmeifyoutry

+0

इसे आपके द्वारा रीफ्रेश किए गए * अंतिम * समय से कैश किया जाएगा। – nickf

+0

बिल्कुल, लेकिन सवाल बताता है कि यह _first_ समय के दौरान लोड नहीं हुआ है, तो कैश किया जा सकता है? – catchmeifyoutry

2

यह तब हो सकता है जब test.php फ़ाइल कैश की गई हो - जो ब्राउज़र के कैश में हो सकती है, या रास्ते में कुछ प्रॉक्सी द्वारा हो सकती है।


test.php की फ़ॉरबिडिंग कैशिंग मदद कर सकता है;

PHP स्क्रिप्ट अक्सर गतिशील सामग्री कि ग्राहक ब्राउज़र या किसी प्रॉक्सी कैश के बीच द्वारा कैश नहीं किया जाना चाहिए उत्पन्न: header मैनुअल पृष्ठ से एक उदाहरण के हवाले से - यह सही HTTP शीर्षलेख भेजने किया जा सकता है सर्वर और क्लाइंट ब्राउज़र। कई प्रॉक्सी और ग्राहकों साथ कैशिंग निष्क्रिय करने के लिए मजबूर किया जा सकता है:

<?php 
header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1 
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // Date in the past 
?> 
2

कैश संभावना कॉल में रुकावट खड़ी कर रहा है। आप मजबूर कर सकते हैं पथ के लिए एक लगातार बदलते स्ट्रिंग जोड़कर इस प्रत्येक यात्रा के नाम से जाना:

<script type="text/javascript" src="test.php?u=<?php print time(); ?>"></script> 
4

के रूप में टो और सिल्की ने कहा, यह सबसे अधिक संभावना पेज कैश नहीं होती की वजह से है। यदि आपके पास फ़ायरबग इंस्टॉल है, तो जब आप पृष्ठ पर जाते हैं तो "नेट" टैब खोलें और आप इसे "304 संशोधित नहीं" कह सकते हैं - इसका मतलब है कि इसे कैश किया गया है।

<script type="text/javascript" src="test.php?_=46031535"></script> 

तुम बस प्रत्येक पृष्ठ लोड पर यह बदलना होगा:

सबसे आसान और विश्वसनीय तरीका (मेरे अनुभव में) एक फ़ाइल संचित हो रही रोकने के लिए यह करने के लिए एक यादृच्छिक क्वेरी स्ट्रिंग को जोड़ने के लिए है (या तो सर्वर या क्लाइंट पक्ष पर)।

बेशक, कैशिंग हेडर सर्वर पर ठीक तरह से स्थापित कर रहे हैं, तो यह नहीं एक मुद्दा होना चाहिए, लेकिन मैं हमेशा इस विधि पाया है आसान हो सकता है।

+3

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

2

लग रहा है अपनी स्क्रिप्ट की तरह पृष्ठ लोड पर पंजीकृत नहीं है, यह सिर टैग के अंदर है?

0

आप कैसे जानते हैं कि यह नहीं देखा गया है?

आप यह मान करो, क्योंकि इसके अंदर कुछ कोड निष्पादित नहीं करता है?

अगर ऐसा है, तो हो सकता है कि आप पेज के डोम तक पहुँच रहे हैं, जबकि पेज अभी तक पूरी तरह से नहीं भरा हुआ है .. (और इस प्रकार जावास्क्रिप्ट विफल रहता है)

लेकिन दूसरी बार (और उसके बाद) पेज के HTML कैश किया गया है और इसलिए स्क्रिप्ट डोम यह पहले से ही वहाँ है का उपयोग करने की कोशिश करता है जब और कोड काम करता है ..

सिर्फ एक अलग सोचा;)

ps।क्या आपको कोई जावास्क्रिप्ट त्रुटियां मिलती हैं?

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