Cross Reference: /yui3/src/datasource/docs/datasource-caching.mustache
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
72378c4b11f0468874fbad14749246d2ae564474Jenny Donnelly<style scoped>
72378c4b11f0468874fbad14749246d2ae564474Jenny Donnelly/* custom styles for this example */
72378c4b11f0468874fbad14749246d2ae564474Jenny Donnelly#demo .output {
72378c4b11f0468874fbad14749246d2ae564474Jenny Donnelly margin-bottom:1em;
72378c4b11f0468874fbad14749246d2ae564474Jenny Donnelly padding:10px;
72378c4b11f0468874fbad14749246d2ae564474Jenny Donnelly border:1px solid #D9D9D9;
72378c4b11f0468874fbad14749246d2ae564474Jenny Donnelly}
72378c4b11f0468874fbad14749246d2ae564474Jenny Donnelly#demo .output pre {
72378c4b11f0468874fbad14749246d2ae564474Jenny Donnelly font-size: 11px;
72378c4b11f0468874fbad14749246d2ae564474Jenny Donnelly}
72378c4b11f0468874fbad14749246d2ae564474Jenny Donnelly#demo .output strong {
72378c4b11f0468874fbad14749246d2ae564474Jenny Donnelly padding: .25em .4em;
72378c4b11f0468874fbad14749246d2ae564474Jenny Donnelly background: #333;
72378c4b11f0468874fbad14749246d2ae564474Jenny Donnelly color: #fff;
72378c4b11f0468874fbad14749246d2ae564474Jenny Donnelly text-shadow: -1px -1px 1px #000;
72378c4b11f0468874fbad14749246d2ae564474Jenny Donnelly border-radius: 5px;
72378c4b11f0468874fbad14749246d2ae564474Jenny Donnelly}
72378c4b11f0468874fbad14749246d2ae564474Jenny Donnelly</style>
72378c4b11f0468874fbad14749246d2ae564474Jenny Donnelly
72378c4b11f0468874fbad14749246d2ae564474Jenny Donnelly<div class="intro">
72378c4b11f0468874fbad14749246d2ae564474Jenny Donnelly <p>The DataSourceCache plugin enables caching on any DataSource to reduce high-latency calls to remote sources and to reduce server load. In this example, the Cache's `max` value has been set to `3`.
72378c4b11f0468874fbad14749246d2ae564474Jenny Donnelly
72378c4b11f0468874fbad14749246d2ae564474Jenny Donnelly</div>
72378c4b11f0468874fbad14749246d2ae564474Jenny Donnelly
819e90d415ed17d59af3a247b2ad9d6feb0c21b5Luke Smith<div class="example yui3-skin-sam">
72378c4b11f0468874fbad14749246d2ae564474Jenny Donnelly {{>datasource-caching-source}}
72378c4b11f0468874fbad14749246d2ae564474Jenny Donnelly</div>
72378c4b11f0468874fbad14749246d2ae564474Jenny Donnelly
72378c4b11f0468874fbad14749246d2ae564474Jenny Donnelly<p>Use the <code>plug()</code> method to initialize the
72378c4b11f0468874fbad14749246d2ae564474Jenny Donnelly<code>DataSourceCache</code> plugin and pass in the configuration value
72378c4b11f0468874fbad14749246d2ae564474Jenny Donnelly<code>max</code> to set the maximum size.</p>
72378c4b11f0468874fbad14749246d2ae564474Jenny Donnelly
72378c4b11f0468874fbad14749246d2ae564474Jenny Donnelly```
72378c4b11f0468874fbad14749246d2ae564474Jenny DonnellyYUI().use("datasource", "dataschema", "cache", function (Y) {
72378c4b11f0468874fbad14749246d2ae564474Jenny Donnelly var callback = {
72378c4b11f0468874fbad14749246d2ae564474Jenny Donnelly success: function (e) { /* output to screen */ },
72378c4b11f0468874fbad14749246d2ae564474Jenny Donnelly failure: function (e) { /* output to screen */ }
72378c4b11f0468874fbad14749246d2ae564474Jenny Donnelly },
72378c4b11f0468874fbad14749246d2ae564474Jenny Donnelly
72378c4b11f0468874fbad14749246d2ae564474Jenny Donnelly myDataSource = new Y.DataSource.Get({
72378c4b11f0468874fbad14749246d2ae564474Jenny Donnelly source: "https://api.github.com/users/",
72378c4b11f0468874fbad14749246d2ae564474Jenny Donnelly
72378c4b11f0468874fbad14749246d2ae564474Jenny Donnelly // this is only needed because the query appends the url
72378c4b11f0468874fbad14749246d2ae564474Jenny Donnelly // rather than the url's query params
72378c4b11f0468874fbad14749246d2ae564474Jenny Donnelly generateRequestCallback: function (guid) {
72378c4b11f0468874fbad14749246d2ae564474Jenny Donnelly return '/repos?callback=YUI.Env.DataSource.callbacks.' + guid;
72378c4b11f0468874fbad14749246d2ae564474Jenny Donnelly }
72378c4b11f0468874fbad14749246d2ae564474Jenny Donnelly }),
72378c4b11f0468874fbad14749246d2ae564474Jenny Donnelly
72378c4b11f0468874fbad14749246d2ae564474Jenny Donnelly myDataSource.plug(Y.Plugin.DataSourceJSONSchema, {
72378c4b11f0468874fbad14749246d2ae564474Jenny Donnelly schema: {
72378c4b11f0468874fbad14749246d2ae564474Jenny Donnelly resultListLocator: "data",
72378c4b11f0468874fbad14749246d2ae564474Jenny Donnelly resultFields: ["name"]
72378c4b11f0468874fbad14749246d2ae564474Jenny Donnelly }
72378c4b11f0468874fbad14749246d2ae564474Jenny Donnelly });
72378c4b11f0468874fbad14749246d2ae564474Jenny Donnelly
72378c4b11f0468874fbad14749246d2ae564474Jenny Donnelly myDataSource.plug(Y.Plugin.DataSourceCache, { max: 3 });
72378c4b11f0468874fbad14749246d2ae564474Jenny Donnelly
72378c4b11f0468874fbad14749246d2ae564474Jenny Donnelly // Adds to cache
72378c4b11f0468874fbad14749246d2ae564474Jenny Donnelly myDataSource.sendRequest({
72378c4b11f0468874fbad14749246d2ae564474Jenny Donnelly request : "lsmith",
72378c4b11f0468874fbad14749246d2ae564474Jenny Donnelly callback: callback
72378c4b11f0468874fbad14749246d2ae564474Jenny Donnelly });
72378c4b11f0468874fbad14749246d2ae564474Jenny Donnelly
72378c4b11f0468874fbad14749246d2ae564474Jenny Donnelly // Adds to cache
72378c4b11f0468874fbad14749246d2ae564474Jenny Donnelly myDataSource.sendRequest({
72378c4b11f0468874fbad14749246d2ae564474Jenny Donnelly request : "davglass",
72378c4b11f0468874fbad14749246d2ae564474Jenny Donnelly callback: callback
72378c4b11f0468874fbad14749246d2ae564474Jenny Donnelly });
72378c4b11f0468874fbad14749246d2ae564474Jenny Donnelly
72378c4b11f0468874fbad14749246d2ae564474Jenny Donnelly // Retrieves from cache
72378c4b11f0468874fbad14749246d2ae564474Jenny Donnelly myDataSource.sendRequest({
72378c4b11f0468874fbad14749246d2ae564474Jenny Donnelly request : "lsmith",
72378c4b11f0468874fbad14749246d2ae564474Jenny Donnelly callback: callback
72378c4b11f0468874fbad14749246d2ae564474Jenny Donnelly });
72378c4b11f0468874fbad14749246d2ae564474Jenny Donnelly});
72378c4b11f0468874fbad14749246d2ae564474Jenny Donnelly```
72378c4b11f0468874fbad14749246d2ae564474Jenny Donnelly
72378c4b11f0468874fbad14749246d2ae564474Jenny Donnelly<h3 id="fullsource">Full Example Source Listing</h3>
72378c4b11f0468874fbad14749246d2ae564474Jenny Donnelly
72378c4b11f0468874fbad14749246d2ae564474Jenny Donnelly```
72378c4b11f0468874fbad14749246d2ae564474Jenny Donnelly {{>datasource-caching-source}}
72378c4b11f0468874fbad14749246d2ae564474Jenny Donnelly```