क्रोम को रोकना मेरा जेएस फाइलें


136

मैं अपनी JS फ़ाइलों में परिवर्तन करूँगा लेकिन यह वास्तव में ब्राउज़र में नहीं बदलेगा, मुझे हर बार फ़ाइलों का नाम बदलना होगा ताकि वह इसे पुनः लोड कर दे। वहाँ किसी तरह का है .htaccess कमांड मैं जोड़ सकते हैं या इसे बंद करने के लिए कुछ कर सकते हैं?

यह भी मेरे HTML पृष्ठों हार्ड कोर कैशिंग है। मुझे केवल परिवर्तन देखने के लिए अपने पूरे ब्राउज़र को फिर से खोलना होगा। क्या यह संभवतः सर्वर की समस्या हो सकती है?


क्या आपके वेब सर्वर में ETag हेडर को सक्षम करने से क्रोम कैश हो जाता है, लेकिन जब यह बदल गया है तो फ़ाइल की एक नई प्रतिलिपि को सही ढंग से पुनर्प्राप्त करता है?
डेवलपर वेब

जवाबों:


200

आप ऊपरी दाएं कोने पर सेटिंग आइकन पर क्लिक कर सकते हैं ...| अधिक उपकरण | डेवलपर उपकरण | नेटवर्क | कैश अक्षम करें (जबकि DevTools खुला है)

खिड़कियों के लिए, यह है F12या CTRL + SHIFT + Iजबकि मैक पर CMD + SHIFT + IDevTools खुलता है।

Chrome अपडेट सेप्ट 2018 के लिए नया रास्ता:

ऊपरी दाएं कोने पर सेटिंग आइकन पर क्लिक करें ...| सेटिंग्स | प्राथमिकताएँ | डेवलपर उपकरण | नेटवर्क | कैश अक्षम करें (जबकि DevTools खुला है)


4
चीजों को कैशिंग करने के लिए क्रोम द्वारा प्रमुख विफलता ... यहां तक ​​कि जब पृष्ठ को नो कैश के साथ चिह्नित किया जाता है .... ओह अच्छी तरह से कम से कम यह काम करता है, उपयोगकर्ता पीड़ित हो सकते हैं लेकिन कम से कम मैं विकसित कर सकता हूं
रॉबर्ट नैक

4
कृपया ध्यान दें कि "सेटिंग" अब नीचे दाईं ओर नहीं है! सेटिंग्स में जाने के लिए ऊपर दाईं ओर मौजूद तीन डॉट्स मेनू पर क्लिक करें ।
यिलेज १४'१६ को १izz:

4
स्थान है: शीर्ष दायां कोना | “…” | सेटिंग्स | प्राथमिकताएँ | नेटवर्क | "कैश को अक्षम करें (जब डेव टूक खुला हो)।

1
यह बहुत बुरा व्यवहार है !!! नहीं, आपके पास आपके उपयोग के लिए एक अस्थायी हैक नहीं होना चाहिए .... आपके पास आपके सभी उपयोगकर्ताओं के लिए एक स्थायी समाधान होना चाहिए। सबसे अच्छा तरीका src के अंत में एक यादृच्छिक क्वेरी स्ट्रिंग है। src = "someJs.js? someRandomStringCreatedByInlineJsOrServerRenderedCode" जो इसे ऐसा बनाएगा कि इसका हर बार फ्रेश वर्जन हो। एक अच्छा यादृच्छिक स्ट्रिंग आज की तारीख / समय को हथियाने और इसे वहां फेंकने के लिए होगा। आप इसे एक स्ट्रिंग में बदल सकते हैं क्योंकि यह शायद एक दिनांक ऑब्जेक्ट होगा। यह वास्तव में बहुत बुरा है कि यह चुना गया उत्तर था और इतनी भारी मात्रा में उखाड़ा गया।

1
Chrome 61.0.3163.100 के अनुसार, ऐसा लगता है कि विकल्प अब अधिक उपकरण / नेटवर्क शर्तों के तहत रहता है। "डेवलपर टूल" विकल्प अब मौजूद नहीं है।
इलिया कौलिकोव

61

ऐसा करने का एक तेज़ तरीका एड्रेस बार के बगल में रिफ्रेश आइकन पर राइट क्लिक करके और खाली कैश और हार्ड रीलोड को चुनना है

बस यह सुनिश्चित करें कि Chrome का देव उपकरण खुला है। (F12 दबाएं) वैसे ... यह ट्रिक केवल विंडोज, उबंटू और मैक ओएस के लिए क्रोम पर काम करती है


2
FYI करें, मैंने यह सब करने की कोशिश की, और इसमें से कोई भी काम नहीं किया। मेरी मशीन पर (माउंटेन शेर के लिए डिफ़ॉल्ट सेटिंग्स के साथ), F12 डैशबोर्ड दिखाता है।
ऑब्रे गुडमैन

2
स्वीकृत उत्तर की तुलना में यह कितना बेहतर है? आप स्वीकृत उत्तर के साथ सामान्य रूप से पुनः लोड कर सकते हैं।
एसएसएच यह

नहीं, तुम नहीं कर सकते। कम से कम मैं नहीं कर सकता। मेरे लिए काम किए गए उत्तरों में से कोई भी, अभी भी एक चेतावनी को पॉप अप नहीं कर रहा है जो मेरी स्थानीय जेएस फ़ाइल में हटा दिया गया है लेकिन क्रोम में अभी भी कैश्ड जेएस फ़ाइल में है।
बुरक करकुस

1
मेरे लिये कार्य करता है। सुनिश्चित करें कि देव-उपकरण खुले हैं, अन्यथा मेनू पर राइट-क्लिक दिखाई नहीं देगा।
वेनेरिक्स

मुझे विकल्प दिखाई देता है, लेकिन मेरे मामले में, स्क्रिप्ट ताज़ा नहीं थी।
इलिया कौलिकोव

25

रीलोड बटन पर क्लिक करते समय शिफ्ट पकड़ें।


12

script.js?a=[random Number]PHP द्वारा उत्पन्न रैंडम संख्या के साथ कुछ जोड़ें ।

क्या आपने समाप्ति की कोशिश की = 0, "नो-कैश" और "कैश-कंट्रोल = NO-CACHE" के रूप में? (मुझे पता नहीं कि वे लिपियों के बारे में क्या कहते हैं)।


2
मैं इस सवाल पर लड़खड़ा गया और जवाबों से बच रहा था। यह एक भयानक विचार है, क्योंकि: 1) हर अनुरोध पर यादृच्छिक संख्या उत्पन्न करने से ब्राउज़र को हर यात्रा पर फ़ाइल को फिर से डाउनलोड करना होगा । आप एक बिल्ड समय मान चाहते हैं , ताकि ब्राउज़र केवल उस मूल्य को पुन: उत्पन्न करें जब आप साइट में परिवर्तन करते हैं। चूंकि PHP रनटाइम व्याख्या है, इसलिए आपको इसके बजाय परिनियोजन-समय पर करने की आवश्यकता हो सकती है। और 2) एक यादृच्छिक संख्या उत्पन्न करने का अर्थ है कि कभी-कभी (समय के साथ बढ़ती संभावना के साथ), ब्राउज़र कुछ यादृच्छिक पुरानी कैश्ड प्रतिलिपि होगा। यदि आपको अनुरोध समय पर करना चाहिए, तो टाइमस्टैम्प का उपयोग करें!
जेकरबॉब

मैं इसे कर रहा हूं और हेडर कैश वैल्यू पर एक सभ्य टाइमआउट (1 दिन) के साथ बिल्ड वर्जन नंबर का उपयोग कर रहा हूं
वॉर्थी 7

11

कुछ विचार:

  1. जब आप Chrome में अपना पृष्ठ ताज़ा करते हैं, तो पूर्ण ताज़ा करने के लिए CTRL + F5 करें।
  2. यहां तक ​​कि अगर आप समाप्ति को 0 पर सेट करते हैं, तो भी यह सत्र के दौरान कैश करेगा। आपको अपने ब्राउज़र को फिर से बंद करना होगा और खोलना होगा।
  3. सुनिश्चित करें कि जब आप सर्वर पर फ़ाइलों को सहेजते हैं, तो टाइमस्टैम्प अपडेट हो रहे हैं। Chrome पहले HEADपूर्ण GET के बजाय एक कमांड जारी करेगा यह देखने के लिए कि क्या उसे पूरी फ़ाइल फिर से डाउनलोड करने की आवश्यकता है, और सर्वर टाइमस्टैम्प को देखने के लिए उपयोग करता है।

यदि आप अपने सर्वर पर कैशिंग अक्षम करना चाहते हैं, तो आप कुछ ऐसा कर सकते हैं:

Header set Expires "Thu, 19 Nov 1981 08:52:00 GM"
Header set Cache-Control "no-store, no-cache, must-revalidate, post-check=0, pre-check=0"
Header set Pragma "no-cache"

.Htaccess में


यह था लेकिन प्री-चेक = 0, पोस्ट-चेक = 0 वह जोड़ है जिसने मेरे लिए अंतर बनाया।
टाडवेलिस

7

त्वरित कदम:

1) Chrome Menu -> Tools -> Developer Tools में जाकर डेवलपर टूल डैशबोर्ड खोलें

2) दाहिने हाथ की तरफ सेटिंग आइकन पर क्लिक करें (यह एक दलदल है!)

3) बॉक्स चेक करें "कैश अक्षम करें (जब DevTools खुला है)"

4) अब, जबकि डैशबोर्ड ऊपर है, बस ताज़ा ताज़ा और जेएस कैश नहीं किया जाएगा!


1
हालाँकि, यह WebStorm का उपयोग करके डीबग करने में मदद नहीं करता है। तब DevTools खुले होते हैं WebStrom एक डिबगर संलग्न नहीं कर सकता।
अलेक्जेंडर वोल्कोव

5

समस्या यह है कि क्रोम must-revalidateको Cache-Control` हेडर में फ़ाइलों को फिर से जांचने के लिए यह देखने की आवश्यकता है कि क्या उन्हें फिर से लाने की आवश्यकता है।

आप हमेशा SHIFT-F5 और Chrome को रीफ़्रेश करने के लिए बाध्य कर सकते हैं, लेकिन यदि आप सर्वर पर इस समस्या को ठीक करना चाहते हैं, तो इस प्रतिक्रिया शीर्षक को शामिल करें:

Cache-Control: must-revalidate

यह क्रोम को सर्वर के साथ जांच करने के लिए कहता है, और देखें कि क्या कोई नई फ़ाइल है। यदि कोई नई फ़ाइल है, तो उसे प्रतिक्रिया में प्राप्त होगी। यदि नहीं, तो उसे 304 प्रतिसाद मिलेगा, और यह आश्वासन कि कैश में एक अप टू डेट है।

यदि आप इस हेडर को सेट नहीं करते हैं, तो फ़ाइल को अमान्य करने वाली किसी अन्य सेटिंग की अनुपस्थिति में, क्रोम कभी भी सर्वर के साथ जांच नहीं करेगा कि क्या कोई नया संस्करण है।

यहाँ एक ब्लॉग पोस्ट है जो इस मुद्दे पर आगे चर्चा करता है।


1
मुझे लगता है कि इसके Cache-Control: must-revalidateबजाय होना चाहिए Cache-Control: must-validate। मुझे नहीं लगता कि बाद मान्य है।
लेज़्ज़्लो मोंडा

3

अपने वेब एप्लिकेशन को अपडेट करते समय मैं या तो अपने सर्वर पर बड़े पैमाने पर हिट से बचने के लिए एक सिंगल जेएस फाइल को वापस करने के लिए हैंडलर का उपयोग करूंगा, या उनमें एक छोटी क्वेरी स्ट्रिंग जोड़ूंगा:

<script type="text/javascript" src="/mine/myscript?20111205"></script>

2
हालांकि यह एक सरल अभ्यास की तरह दिखता है, आपको कुछ समस्याओं के साथ समस्या हो सकती है जो क्वेरी स्ट्रिंग मिलने पर कैश में समाप्त हो जाएगी: Developers.google.com/speed/docs/best-practices/…
फ्रेंकोइस बुर्जुआ

2
तो इसके बजाय आपको क्या करना चाहिए?
ब्लूस्की

1
<Files *>
Header set Cache-Control: "no-cache, private, pre-check=0, post-check=0, max-age=0"
Header set Expires: 0
Header set Pragma: no-cache
</Files>

1

मुझे पता है कि यह एक "पुराना" प्रश्न है। लेकिन कैशिंग के साथ सिरदर्द कभी नहीं होते हैं। परीक्षण और त्रुटियों के ढेर के बाद, मैंने पाया कि हमारे वेब होस्टिंग प्रदाताओं में से एक ने CPanel के माध्यम से इस ऐप को कैशेवाल कहा था। मैंने अभी Enable Development mode और ... voilà पर क्लिक किया है !!! यह लंबे समय से पीड़ित दर्द को तुरंत दूर कर देता है :) उम्मीद है कि यह किसी और की मदद करता है ... आर


0

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


0
  1. डेवलपर टूल खोलें

    • या तो F12
    • या ...-> More Tools->Developer Tools
  2. क्लिक करें Empty Cache and Hard Reload

    • या तो राइट-क्लिक करें ताज़ा करें आइकन (बस यूआरएल बार को छोड़ दिया जाता है)
    • या रिफ्रेश आइकन पर बायाँ-क्लिक करें और इसे 1 सेकंड के लिए रखें

0

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

https://www.quora.com/Does-incognito-mode-on-Chrome-use-the-cache-that-was-previously-stored

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.