आप विकास के दौरान कैशिंग से कैसे बचते हैं?


31

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


ऐसा लगता है कि सीएसएस के लिए ऐसा करने के लिए कई प्लगइन्स भी हैं । क्या यह वास्तव में आवश्यक है? क्या वे प्लगइन्स कुछ ऐसा करते हैं जो ब्राउज़र कैश को साफ़ नहीं करते हैं?
cboettig

मेरे मामले में यह पता चला है कि मुझे DNS प्रदाता (क्लाउडफ्लेयर) द्वारा निर्मित कैश को साफ़ करना था। हालांकि नीचे दिए गए सभी सुझावों के लिए धन्यवाद।
कॉबेटीग

मैं क्रोम ब्राउज़र का उपयोग करता हूं; जब मैं विकास के दौरान ब्राउज़र स्तर कैश मुद्दों पर आता हूं तो इसकी गुप्त विंडो काम आती है।
जोसेफ कुलंदाई

आशा है कि यह प्लगइन आपकी सहायता करेगा: wordpress.org/plugins/prevent-browser-caching
कोस्त्या टेरेशचुक

जवाबों:


32

filemtime()संस्करण पैरामीटर के रूप में अपनी स्टाइलशीट जोड़ें । कहते हैं कि चलो, अपने डिफ़ॉल्ट स्टाइलशीट में है css/default.cssऔर css/default.min.css( नहींstyle.css )। जब हम wp_loaded( नहींinit ) पर एक स्टाइलशीट पंजीकृत करते हैं , तो हम चौथे पैरामीटर के रूप में एक संस्करण पारित कर सकते हैं। वह अंतिम संशोधित समय होगा और इसलिए हर बार जब हम फ़ाइल बदलते हैं तो बदल जाते हैं।

$min    = WP_DEBUG ? '': '.min';
$file   = "/css/default$min.css";
$url    = get_template_directory_uri() . $file;
$path   = get_template_directory() . $file;
$handle = get_stylesheet() . '-default';

// Overridden?
if ( is_child_theme() && is_readable( get_stylesheet_directory() . $file ) )
{
    $url  = get_stylesheet_directory_uri() . $file;
    $path = get_stylesheet_directory()     . $file;
}

$modified = filemtime( $path );

add_action( 'wp_loaded', function() use ( $handle, $url, $modified ) {
    wp_register_style( $handle, $url, [], $modified );
});

add_action( 'wp_enqueue_scripts', function() use ( $handle ) {
    wp_enqueue_style( $handle );
});

यदि आप Node.js और Grunt का उपयोग कर रहे हैं, तो मैं दृढ़ता से Browsersync की सलाह देता हूं । यह आपकी फ़ाइलों को देखेगा और जब भी वे बदलेगा उन्हें तुरंत अपडेट कर देगा। यह स्क्रॉल करने की स्थिति को भी सिंक्रनाइज़ कर सकता है, कई खुले ब्राउज़र में सबमिशन और बहुत कुछ बना सकता है। बहुत ही शांत।


बहुत धन्यवाद। ऐसा प्रतीत होता है कि यह उपरोक्त प्लगइन का दृष्टिकोण भी है। इसने मेरे मामले में समस्या को हल नहीं किया क्योंकि मेरे DNS प्रदाता (CloudFlare) css फ़ाइल को कैशिंग कर रहा था, इसलिए मुझे वहाँ कैश को साफ़ करना पड़ा - अनुमान है कि इसके आसपास कोई सरल तरीका नहीं है। सामान्य तौर पर, मुझे लगता है कि यह इस तरह के मुद्दे का सबसे अच्छा जवाब है इसलिए मैं स्वीकार करूंगा। एक बार फिर धन्यवाद।
कॉबेटीग

आप विकास के दौरान अपनी स्थानीय स्टाइलशीट का उपयोग क्यों नहीं करते हैं?
fuxia

कुछ क्लाउड कैशिंग सेवाएँ आपकी फ़ाइल को 8 + घंटे तक कैश कर देंगी, इसलिए आपको या तो उन्हें संस्करण (कुछ ऐसा करने) के लिए बेहतर सेवा लागू करने, सेवाओं को बदलने, या उनका उपयोग करने से रोकने के लिए अनुरोध करना होगा।
व्यिक

@ कॉबिगेट क्लाउडफ्लेयर में एक देव मोड सेटिंग है जो 3 घंटे की विंडो के लिए कैशिंग को रोक देगा। इसके बाद 3 घंटे के बाद स्वचालित रूप से कैशिंग शुरू हो जाती है।
गिल्बर्ट

7

एक सरल समाधान की खोज करने के बाद कई बार मैंने कुछ ऐसा काम करने का फैसला किया!

इसलिए ... इसके बारे में सोचने के बाद मुझे नई वेबसाइटों को विकसित करने के दौरान कैशिंग को ओवरराइड करने का एक शानदार तरीका मिला ... (और इसके आसान)।

Wp को यह बताने की जरूरत है कि यह इस तरह का एक नया CSS संस्करण है ...

परिवर्तन से पहले:

wp_enqueue_style( 'maincss', get_template_directory_uri() . '/css/style.css', array(), false, 'all' );

बदलाव के बाद:

wp_enqueue_style( 'maincss', get_template_directory_uri() . '/css/style.css?v='.time(), array(), false, 'all' );

यह वही है जो हमने जोड़ा:

?v='.time()

स्पष्टीकरण:
हम मूल रूप से सीएसएस फ़ाइल में एक डायनामिक संस्करण संख्या जोड़ रहे हैं जो ब्राउज़र को हर बार अपडेट करने पर नए सीएसएस को लोड करने के लिए मजबूर करता है।

अपने किए गए विकास के बाद इसे हटाना न भूलें अन्यथा आपका कैशिंग इस फ़ाइल के लिए काम नहीं करेगा और यह उपयोगकर्ताओं को बार-बार वापस करने के लिए लोड करेगा।

यह तकनीक css & js फाइलों के लिए काम करती है - आशा है कि इससे मदद मिलेगी;)


बहुत अच्छा है, लेकिन अभी भी बेहतर है, बस 4 वें पैरामीटर में समय () का उपयोग करें जो संस्करण है। जो आपको देगा:wp_enqueue_style( 'maincss', get_template_directory_uri() . '/css/style.css', array(), time(), 'all' );
डेव

4 वें पैरामीटर के रूप में समय का उपयोग करके उस संस्करण पर पकड़ के लिए क्रोम को क्रोम किया जा सकता है। यह विशेष रूप से सच है अगर आप किसी लाइव साइट पर काम करते समय अपना सब कुछ कैशिंग करते हैं। इस तरह से आप एक "नई फ़ाइल" को क्रोम के लिए प्रस्तुत कर रहे हैं, जिसे वह उस "पुराने" संस्करण को समय की राशि (अन्य संसाधनों के लिए सेट) के लिए रखने की कोशिश करने के बजाय उपयोग करेगा।
सगिव एसईओ

नहीं, क्रोम में ठीक काम करता है, मैं कल इसका इस्तेमाल कर रहा था।
डेव

इसका मतलब है कि आप अपने htaccess में या एक प्लगइन के माध्यम से कैश / समाप्ति समय सेट करें। लेकिन, जो कुछ भी आपके लिए काम करता है;)
सगिव एसईओ

6

यह अत्यधिक सरल लग सकता है, लेकिन कैशिंग को अक्षम करने के बारे में तब तक कैसे करें जब तक कि आप अपनी साइट के विकास हिस्से के साथ नहीं हो जाते? इसे चालू और बंद करना सरल से अधिक है।


2
+1 - मैं फ़ायरफ़ॉक्स के लिए "वेब डेवलपर" टूलबार का उपयोग करता हूं, आपको बहुत जल्दी कैश (अन्य चीजों के बीच) को अक्षम करने की अनुमति देता है
शेन

धन्यवाद - क्या केवल ब्राउज़र के कैश को अक्षम करना आवश्यक है? क्या WP सुपरकैश अभी भी कैश्ड सामग्री प्रदान करेगा? यहां तक ​​कि मेरी DNS सेवा भी कैश हो जाती है, इसलिए मुझे अनिश्चित है कि मुझे हर कैश (WP, ब्राउज़र, DNS, आदि) को अलग से अक्षम करने की आवश्यकता है।
cboettig

Sorta निर्भर करता है, आपको इसके साथ खेलना होगा और यह पता लगाना होगा कि आपको अपने कॉन्फ़िगरेशन के लिए क्या करना है।
mor7ifer

उसके साथ Im, बस इसे निष्क्रिय, मैं क्या करता है।
मैट

4

मुझे पता है कि इस प्रश्न का उत्तर स्वीकार कर लिया गया है, लेकिन मुझे लगता है कि यह प्रश्न अभी भी समस्या के लिए बहुत जटिल है, और यह वास्तव में उपयोगकर्ता के आधार पर गलत हो सकता है (हालांकि कोई अपराध नहीं है), इसलिए मैंने सोचा कि मैं अभी भी साझा करूँगा जब मैं अपना देव (केवल Wordpress के साथ नहीं) करता हूं, तो मैं कैशिंग को कैसे दरकिनार करूंगा।

अधिकांश आधुनिक ब्राउज़रों में गुप्त मोड कहा जाता है । इस मोड में, आपके कंप्यूटर में कुछ भी कैश नहीं है, इसलिए हर रिफ्रेश सर्वर से एक ताजा स्लेट डाउनलोड है। Internet Explorer में आप दबाते हैं Ctrl + Shift + P। फ़ायरफ़ॉक्स और क्रोम में, आप दबाएं Ctrl + Shift + N

यदि आपके ब्राउज़र में गुप्त मोड नहीं है, तो आप सामान्यतः Ctrl + F5IE के लिए, या Ctrl + Shift + Rफ़ायरफ़ॉक्स और क्रोम पर दबाकर एक कठिन पुनः लोड कर सकते हैं ।

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

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

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

बाईपास WP सुपर कैश की कैशिंग करने का सही तरीका विकल्प सेट करने के लिए है Don't cache for known usersकरने के लिए trueप्लगइन की सेटिंग पेज में।

अंत में और यह एक व्यक्तिगत प्राथमिकता है, जैसा कि मैं एक वास्तविक स्टिकलर हूं जब यह कोडिंग की बात आती है), गुप्त या मजबूर हार्ड लोड के उपयोग का सहारा लेते हुए आपको अपने HTML पृष्ठों पर अनावश्यक मार्कअप जोड़ने की आवश्यकता नहीं होगी। बेशक, टाइमस्टैम्प जोड़ने से प्रति अनुरोध प्रति स्थिर फ़ाइल में लगभग 13 बाइट्स जुड़ जाते हैं, लेकिन हे, जैसे मैंने कहा, मैं इस तरह के सामान के लिए एक स्टिकर हूं। यह अभी भी 13 बाइट्स अनावश्यक है।


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

2

हे भगवान, इस एक का जवाब देने के कई तरीके! सबसे पहले और सबसे महत्वपूर्ण बात, आपने दो अलग-अलग चीजों के बारे में पूछा: WP सुपर कैश और CSS फाइलें। ये अलग-अलग जगहों पर अलग-अलग तरीके से कैश किए जाते हैं, इसलिए यह पहचानना जरूरी है कि आपकी समस्या कहां है।

WP सुपर कैश, यदि आप DONOTCACHEPAGEWP सुपर कैश को कुछ भी कैशिंग से रोकने के लिए विकास के दौरान अपने कार्यों में निरंतर परिभाषित कर सकते हैं । हालांकि लॉन्च पर इसे हटाने के लिए मत भूलना!

define('DONOTCACHEPAGE', true);

प्रत्येक साइट में पृष्ठ के एक ताजा संस्करण को लोड करने के लिए URL को जोड़ने की एक अनूठी कुंजी होती है, जिसे आप "उन्नत" टैब में पा सकते हैं, मुझे विश्वास है।

इसे और भी बेहतर समाधान के लिए तोड़ते हुए, आपको एक विकास वातावरण और उत्पादन वातावरण स्थापित करने पर विचार करना चाहिए, जहां आपके विकास के वातावरण में WP सुपर कैश सक्षम नहीं है (फिर, यह मानते हुए कि यह आपकी समस्या है)।

यदि आपका मुद्दा CSS / JS फाइलों के साथ है, तो उत्तर को toscho और बाद में टिप्पणी m0r7if3r द्वारा देखें।


1

जब आप एक व्यवस्थापक के रूप में लॉग इन करते हैं तो हाइपर कैश कैशिंग अक्षम करता है। यह सुनिश्चित नहीं है कि WP सुपर कैश में समान कार्यक्षमता है या नहीं।


उसके लिए एक विकल्प है, हाँ।
मैथ्यू बोयन्स

1

यदि आप Chrome का उपयोग कर रहे हैं (जो मैं अत्यधिक सुझाव देता हूं), तो इंस्पेक्टर खोलें, निचले दाएं कोने में सेटिंग आइकन पर क्लिक करें और "नेटवर्क" के तहत "कैश अक्षम करें" चुनें।


0

जैसा कि wp सुपर कैश के लिए कहा जाता है, लेकिन सामान्य WP कैशिंग में इसे wp-config.php बदलने के लिए:

define( 'WP_CACHE', false );

संदर्भ: codex.wordpress.org


-1

आप इस स्निपेट का उपयोग कर सकते हैं https://gist.github.com/jhayiwg/92bae4330aeb738a98022d7ab63ce9b1

जब भी आप पृष्ठ को लोड करेंगे, यह आपके सक्रिय विषय css और js का नया संस्करण उत्पन्न करेगा


कृपया, सभी प्रासंगिक कोड सहित यहां उत्तर पोस्ट करें। केवल संदर्भ के लिए बाहरी साइटों का उपयोग करें। आपकी पोस्ट को अन्य साइट पर जाने की आवश्यकता के बिना एक पूर्ण उत्तर प्रदान करना चाहिए; यदि तृतीय पक्ष साइट नीचे जाती है, तो आपका उत्तर
अप्रयुक्त
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.