2010-04-19 23 views
20

तो मैंने अपने केकफ़्प ऐप में कैश बाढ़ को खोला और अब मैं उन्हें बंद करना चाहता हूं ...मैं केकफ़्पी में कैशिंग को पूरी तरह अक्षम कैसे करूं?

मैंने बहुत कुछ किया है जो मैं कर सकता हूं: tmp फ़ोल्डर में सभी फ़ाइलों को हटाएं (लेकिन फ़ोल्डर नहीं) मेरे ऐप में core.php फ़ाइल में 'Cache.disable' चालू हो गया है, ने कुछ नियंत्रकों के भीतर स्पष्ट कैश() और कैश :: स्पष्ट() के साथ कैश साफ़ करने का प्रयास किया है (लेकिन मुझे संदेह है कि यह काम नहीं करता है क्योंकि यह लोड नहीं हो रहा है नियंत्रक - कैशिंग के कारण)।

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

+0

क्या आपने अपने ब्राउज़र कैश को साफ़ करने का प्रयास किया है? यह भी मूल्यांकन कर रहे हैं कि क्या यह आपके आवेदन को कैशिंग कर रहा है? ध्यान रखें कि कैशिंग के साथ भी,/tmp/cache में अभी भी फाइलें होंगी, क्योंकि मॉडल हमेशा कैश किए जाते हैं। –

+0

जिस तरीके से मैंने यह आकलन करने की कोशिश की है कि यह कैशिंग है, एक दृश्य में हाय डालने और यह देखने के बाद कि यह एक रीलोड के बाद आता है और, हाँ, ब्राउज़र कैश का खाली होना। एक साइड नोट के रूप में, मैंने समस्या का पता लगाया है, लेकिन अब मुझे नहीं पता कि इससे कैसे निपटना है: दृश्य कैश फ़ाइल प्रत्येक मैन्युअल हटाने के बाद पुन: प्रयास करती रहती है ... भले ही मेरे पास हर कैश सुविधा हो अक्षम खोजें इस बावजूद यह अभी भी दृश्य को कैशिंग क्यों कर रहा है? –

+0

शायद इसे डीबग के साथ आज़माएं: 0 कॉन्फ़िगरेशन में सेट करें, क्योंकि मुझे पता है कि डीबग: 2 प्रत्येक अनुरोध पर सबकुछ पुन: उत्पन्न करेगा। अन्यथा शायद फ़ाइल केवल पढ़ी जाती है, या आपका FTP क्लाइंट फ़ोल्डर को सही तरीके से रिपोर्ट नहीं कर रहा है? बस एक विचार :) –

उत्तर

12

मूल कारण के रूप में ब्राउज़र कैशिंग को हटाने के लिए, आप निम्नलिखित लाइनों जोड़कर भी देख सकते:

header('Cache-Control: no-store, private, no-cache, must-revalidate');     // HTTP/1.1 
header('Cache-Control: pre-check=0, post-check=0, max-age=0, max-stale = 0', false); // HTTP/1.1 
header('Pragma: public'); 
header('Expires: Sat, 26 Jul 1997 05:00:00 GMT');          // Date in the past 
header('Expires: 0', false); 
header('Last-Modified: '.gmdate('D, d M Y H:i:s') . ' GMT'); 
header('Pragma: no-cache'); 

के संयोजन इन सभी कैश-पर्दाफाश HTTP हेडर गया है, मेरे अनुभव में, सभी ब्राउज़रों में काम किया, और कुछ बहुत ही आक्रामक कैशिंग प्रॉक्सी के आसपास भी है।

+0

यह मेरे लिए काम करता है, धन्यवाद! – zx1986

+0

मैं कोड की इन पंक्तियों को कहां जोड़ सकता हूं? अग्रिम धन्यवाद। – Maximum86

2

मुझे कैश होने के बाद एक बार समस्या थी और अब तालिका की स्कीमा को प्रतिबिंबित नहीं किया गया था।

मुझे अपना /config/core.php अपडेट करना था और "डीबग: 2" सेट करना यह मेरे मॉडल की कैशिंग को अक्षम करता है और मेरी समस्याओं को ठीक करता है।

+0

यह कार्य करता है, लेकिन पृष्ठ पर विस्तृत त्रुटियों, SQL कथन आदि दिखाने का अनपेक्षित प्रभाव भी है। डीबग मोड 2 विकास के लिए अच्छा है, डीबग मोड 0 उत्पादन (सार्वजनिक दृश्य) के लिए अच्छा है। वर्तमान कार्य के लिए http://stackoverflow.com/q/5901246 देखें, और एक स्पष्टीकरण के लिए http://stackoverflow.com/a/3118292/216084 देखें। –

3

एक लंबा शॉट (प्लस यह धागा पुराना है, लेकिन ओह ठीक है), लेकिन मुझे एक ही समस्या थी: मैं आईईएक्स अनुरोधों को जिंग करने के लिए आईई नहीं प्राप्त कर सकता था (jQuery का उपयोग करके)। बहुत दिल दर्द और सिरदर्द के बाद एक सरल:

$.ajaxSetup({cache:false}); 

चाल चल रही थी। मुझे प्यार करना होगा ...

+3

यदि कुछ भी है, तो आईई के लिए यह एक अच्छी बात है।और यह jQuery है, केक नहीं। – 472084

3

आप कुछ तत्व कैशिंग के लिए अपने नियंत्रक कोड को देख सकते हैं और उन्हें गलत पर सेट कर सकते हैं। यह आपके द्वारा उपयोग किए जाने वाले केक के संस्करण के आधार पर app_controller.php या नियंत्रक/AppController.php पर लागू होता है।

Controller::cacheAction = false 

echo $this->element('latest_comments', array(), array('cache' => false)); 

आप अपने नियंत्रक कार्रवाई में Controller::disableCache(); जोड़ने का प्रयास कर सकते हैं।

+1

मुझे लगता है कि यह 'echo $-- तत्व (' latest_comments ', सरणी(), सरणी (' कैश '=> झूठी) होना चाहिए); ' –

+0

@RobSawyer धन्यवाद। अद्यतन उत्तर – icebreaker

+0

सार्वजनिक $ कैशएक्शन = झूठा; केकपीएचपी 2 में आपके ऐप कंट्रोलर के लिए –

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