Hola, estoy usando ColdFusion para llamar a la API de last.fm, usando un paquete cfc procedente de here.Límite de frecuencia de llamadas a un API que utiliza caché en ColdFusion
Me preocupa sobrepasar el límite de solicitud, que es de 5 solicitudes por dirección IP de origen por segundo, promediada durante un período de 5 minutos.
El paquete cfc tiene un componente central que llama a todos los demás componentes, que se dividen en secciones como "artista", "pista", etc ... Este componente central "lastFmApi.cfc". se inicia en mi solicitud, y persistió durante la vida útil de la aplicación
// 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>
Ahora si quiero llamar a la API a través de un controlador/controlador, por ejemplo, mi manejador artista ... Puedo hacer esto
<cffunction name="artistPage" cache="5 mins">
<cfset qAlbums = application.lastFm.user.getArtist(url.artistName) />
</cffunction>
Estoy un poco confundido con el almacenamiento en caché, pero guardo en caché cada llamada a la API en este controlador durante 5 minutos, pero ¿esto marca alguna diferencia, porque cada vez que alguien visita una página de un artista nuevo esto todavía cuenta como nuevo golpear contra la api?
Se pregunta cuál es la mejor para hacer frente a esta
Gracias
Hola, gracias por su respuesta, solo tratando de obtener una mejor comprensión. Pregunto dónde colocaría * yourCacheStruct *, en la aplicación.cfc? ¿Este método también parece limitar las llamadas por función, en lugar de la aplicación de ancho? I.E solo puede realizar 5 solicitudes por dirección IP de origen por segundo, promediadas durante un período de 5 minutos. Estas solicitudes pueden provenir de cualquier lugar de la aplicación, desde el controlador de la página del artista anterior o desde un controlador de la página de seguimiento.Por lo tanto, la aplicación debe garantizar que todas las llamadas desde cualquier lugar no superen el límite – namtax
Edité el código en esta respuesta para tener una idea más clara de cómo almacenar el caché en el alcance de la aplicación. A largo plazo, podría considerar agregar un controlador de caché que maneje todo el almacenamiento en caché de datos a través de unas pocas llamadas a función, en lugar de reescribirlo en cada método que necesita hacer uso del almacenamiento en caché; pero esto debería darte una idea de cómo se hace. –
No estoy seguro de por qué @zarko decidió poner 'cache =" 5 mins "' en la definición de la función, sin embargo. No hace nada excepto agregar algunos metadatos personalizados. –