में कैश का उपयोग करके एपी को रेट करने की दर सीमित करें हाय मैं here से सीएफसी बंडल का उपयोग करके अंतिम.एफएम एपीआई को कॉल करने के लिए कोल्डफ्यूजन का उपयोग कर रहा हूं।कोल्डफ्यूजन
मैं अनुरोध सीमा पर जाने के बारे में चिंतित हूं, जो प्रति सेकंड प्रति आईपी पते प्रति 5 अनुरोध है, औसत 5 मिनट की अवधि में औसत है।
सीएफसी बंडल का एक केंद्रीय घटक है जो अन्य सभी घटकों को कॉल करता है, जो "कलाकार", "ट्रैक" आदि जैसे वर्गों में विभाजित होते हैं ... यह केंद्रीय घटक "lastFmApi.cfc।" अपने आवेदन में शुरू की है, और आवेदन
// Application.cfc example
<cffunction name="onApplicationStart">
<cfset var apiKey = '[your api key here]' />
<cfset var apiSecret = '[your api secret here]' />
<cfset application.lastFm = CreateObject('component', 'org.FrankFusion.lastFm.lastFmApi').init(apiKey, apiSecret) />
</cffunction>
अब अगर मैं कोई हैंडलर/नियंत्रक के माध्यम से API कॉल करना चाहते हैं के जीवन काल के लिए एक समान होती है, उदाहरण के लिए मेरी कलाकार हैंडलर ... मैं इस
कर सकते हैं<cffunction name="artistPage" cache="5 mins">
<cfset qAlbums = application.lastFm.user.getArtist(url.artistName) />
</cffunction>
मैं कैशिंग की ओर थोड़ा उलझन में हूं, लेकिन इस हैंडलर में 5 मिनट के लिए प्रत्येक कॉल को एपीआई में कैश कर रहा हूं, लेकिन इससे कोई फर्क पड़ता है, क्योंकि प्रत्येक बार जब कोई नया कलाकार पृष्ठ हिट करता है तो यह अभी भी ताजा नहीं होगा एपीआई के खिलाफ मारा?
सोच से निपटने के लिए कैसे सबसे अच्छा यह
धन्यवाद
आपकी प्रतिक्रिया के लिए हाय धन्यवाद, बस बेहतर समझने की कोशिश कर रहा है। वंडर मैं application.cfc में * yourCacheStruct * कहां रखूं? यह विधि केवल आवेदन के बजाए प्रति फ़ंक्शन कॉल सीमित कर रही है? आईई आप केवल प्रति मिनट प्रति आईपी पते प्रति 5 अनुरोध कर सकते हैं, औसत 5 मिनट की अवधि में औसत। ये अनुरोध एप्लिकेशन में कहीं भी, कलाकार पृष्ठ हैंडलर से, या शायद ट्रैक पेज हैंडलर से आ सकते हैं।तो आवेदन को यह सुनिश्चित करना है कि कहीं से भी सभी कॉल सीमा – namtax
सीमा से अधिक न हों, मैंने इस दायरे में कोड को संपादित किया ताकि एप्लिकेशन स्कोप में कैश को स्टोर करने के बारे में स्पष्ट जानकारी दी जा सके। लंबे समय तक, मैं एक कैश नियंत्रक जोड़ने पर विचार कर सकता हूं जो कुछ फ़ंक्शन कॉल के माध्यम से डेटा के सभी कैशिंग को संभालता है, बजाय प्रत्येक विधि में इसे फिर से लिखने के बजाय कैशिंग का उपयोग करने की आवश्यकता होती है; लेकिन यह आपको एक विचार देना चाहिए कि यह कैसे किया जाता है। –
मुझे यकीन नहीं है कि क्यों @zarko ने फ़ंक्शन परिभाषा में 'cache =" 5 mins "डालने का निर्णय लिया। यह कुछ कस्टम मेटाडेटा को छोड़कर कुछ भी नहीं करता है। –