2010-06-14 9 views
5

के अंदर कैश्डविड्थ एटिब्यूट का उपयोग करते समय जब आप cfquery में cachedwithin विशेषता का उपयोग करते हैं, तो यह क्वेरी को स्मृति में कैसे संग्रहीत करता है। क्या यह केवल उस नाम से संग्रहीत करता है जिसे आप क्वेरी में निर्दिष्ट करते हैं? उदाहरण के लिए, यदि मेरे इंडेक्स पेज पर मैं एक घंटे के लिए एक क्वेरी कैश करता हूं और इसे नाम देता हूं तो लोग एक ही पृष्ठ के साथ एक अलग पृष्ठ पर एक प्रश्न पूछेंगे (या उस मामले के लिए एक ही पृष्ठ) कैश किए गए परिणामों का उपयोग करें या क्या यह कुछ बेहतर तर्क का उपयोग करता है यह तय करने के लिए कि क्या यह वही प्रश्न है?cfquery

इसके अलावा, यदि आपकी क्वेरी में कोई चर है तो कैश चर के मान को ध्यान में रखता है?

उत्तर

5

यह केवल नाम नहीं है - यह सटीक क्वेरी है जिसे आप चल रहे हैं।

<cfquery name="getPeople" cachedwithin=".5" ...> 
select name from employee order by name 
</cfquery> 

आप अपने एप्लिकेशन में कहीं और यह एक ही क्वेरी आह्वान हैं, तो आप अगर यह पहली क्वेरी के आधे एक दिन के भीतर है कैश्ड संस्करण मिल जाएगा। लेकिन ये ताजा डेटा के लिए डेटाबेस हिट करेंगे:

<!--- Different name, same SQL: A new cached query ---> 
<cfquery name="getEmployees" cachedwithin=".5" ...> 
select name from employee order by name 
</cfquery> 

<!--- Different SQL, same name: Redefining the cached query ---> 
<!--- Note: As pointed out in comments, it's not really overwriting the old query 
     of the same name, but making a new one in the cache. The first one by the 
     same name is still in the cache, waiting for eviction. ---> 
<cfquery name="getPeople" cachedwithin=".5" ...> 
select name from employee order by name desc 
</cfquery> 

और हाँ, यह एक चर को ध्यान में रखता है। यदि आप cfqueryparam का उपयोग करते हैं - जो आपको करना चाहिए - आपका डेटाबेस क्वेरी प्लान कैश करेगा, लेकिन cachedwithin का उपयोग करके, एक परिवर्तित पैरामीटर वाले प्रत्येक क्वेरी को क्वेरी कैशिंग परिप्रेक्ष्य से अलग माना जाएगा। ध्यान दें कि इसका अर्थ यह है कि यदि आप विभिन्न पैरामीटर के साथ कई बार चलने वाली क्वेरी पर cachedwithin का उपयोग करते हैं, तो आप कम क्वेरी कैश दरों वाले प्रश्नों के साथ अपनी क्वेरी कैश बाढ़ करेंगे।

+0

तो आप जो कह रहे हैं वह यह है कि दूसरा मिलता है, परिणाम परिणाम सेट 1 getPeople परिणाम सेट को प्रतिस्थापित करेगा? – Jason

+0

कैश क्वेरी योजना? वास्तव में? – Henry

+0

@ जेसन, दस्तावेज़ के अनुसार, नहीं, चूंकि SQL कथन अलग है हालांकि उनके पास एक ही क्वेरी नाम है। – Henry

3

http://help.adobe.com/en_US/ColdFusion/9.0/CFMLRef/WSc3ff6d0ea77859461172e0811cbec22c24-7fae.html

संचित डेटा का उपयोग करने के से, वर्तमान क्वेरी ही SQL विवरण, डेटा स्रोत, क्वेरी नाम, उपयोगकर्ता नाम, पासवर्ड उपयोग करना चाहिए।

तो उन 'कुंजी' हैं

चर कि "अगर यह एक ही क्वेरी है तय"? हां, जब तक आप <cfqueryparam>

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