DataSource Utility: DataSource with Caching
The DataSourceCache plugin enables caching on any DataSource to reduce high-latency calls to remote sources and reduce server load. In this example, the Cache's
max
value has been set to 3
.
Use the plug()
method to initialize the DataSourceJSONSchema plugin and pass in the configuration value max
to set the maximum size.
YUI().use("datasource-get", "datasource-jsonschema", "datasource-cache", function(Y) { var source = "remote source", myDataSource = new Y.DataSource.Get({ source:"http://query.yahooapis.com/v1/public/yql?format=json&"}), callback = { success: function(e){ alert(e.response); }, failure: function(e){ alert("Could not retrieve data: " + e.error.message); } }; myDataSource.plug(Y.Plugin.DataSourceJSONSchema, { schema: { resultListLocator: "query.results.result", resultFields: ["title"] } }); myDataSource.plug(Y.Plugin.DataSourceCache, {max:3}); // Adds to cache myDataSource.sendRequest( "q=select%20*%20from%20search.web%20where%20query%3D%22foo%22",callback); // Adds to cache myDataSource.sendRequest( "q=select%20*%20from%20search.web%20where%20query%3D%22bar%22",callback); // Retrieves from cache myDataSource.sendRequest( "q=select%20*%20from%20search.web%20where%20query%3D%22foo%22",callback); });
YUI().use("datasource-get", "datasource-jsonschema", "datasource-cache", function(Y) { var source = "remote source", myDataSource = new Y.DataSource.Get({ source:"http://query.yahooapis.com/v1/public/yql?format=json&"}), callback = { success: function(e){ alert(e.response); }, failure: function(e){ alert("Could not retrieve data: " + e.error.message); } }; myDataSource.plug(Y.Plugin.DataSourceJSONSchema, { schema: { resultListLocator: "query.results.result", resultFields: ["title"] } }); myDataSource.plug(Y.Plugin.DataSourceCache, {max:3}); // Adds to cache myDataSource.sendRequest( "q=select%20*%20from%20search.web%20where%20query%3D%22foo%22",callback); // Adds to cache myDataSource.sendRequest( "q=select%20*%20from%20search.web%20where%20query%3D%22bar%22",callback); // Retrieves from cache myDataSource.sendRequest( "q=select%20*%20from%20search.web%20where%20query%3D%22foo%22",callback); });