在尤大微博看到的一个vue-hackernews-2.0的应用示例里有以下代码。
import Firebase from 'firebase'
import LRU from 'lru-cache'
const inBrowser = typeof window !== 'undefined'
// When using bundleRenderer, the server-side application code runs in a new
// context for each request. To allow caching across multiple requests, we need
// to attach the cache to the process which is shared across all requests.
const cache =inBrowser
? null
: (process.__API_CACHE__ || (process.__API_CACHE__ = createCache()))
function createCache () {
return LRU({
max: 1000,
maxAge: 1000 * 60 * 15 // 15 min cache
})
}
// create a single api instance for all server-side requests
const api = inBrowser
? new Firebase('https://hacker-news.firebaseio.com/v0')
: (process.__API__ || (process.__API__ = createServerSideAPI()))
function createServerSideAPI () {
const api = new Firebase('https://hacker-news.firebaseio.com/v0')
// cache the latest story ids
api.__ids__ = {}
;['top', 'new', 'show', 'ask', 'job'].forEach(type => {
api.child(`${type}stories`).on('value', snapshot => {
api.__ids__[type] = snapshot.val()
})
})
// warm the front page cache every 15 min
warmCache()
function warmCache () {
fetchItems((api.__ids__.top || []).slice(0, 30))
setTimeout(warmCache, 1000 * 60 * 15)
}
return api
}
function fetch (child) {
if (cache && cache.has(child)) {
return Promise.resolve(cache.get(child))
} else {
return new Promise((resolve, reject) => {
api.child(child).once('value', snapshot => {
const val = snapshot.val()
// mark the timestamp when this item is cached
val.__lastUpdated = Date.now()
cache && cache.set(child, val)
resolve(val)
}, reject)
})
}
}
求解释含义,网上搜了一下LRU都是说的是一个算法??这个的应用的作用是什么?