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); });

