Express JS-缓存内存.get()不起作用

时间:2018-09-25 18:57:40

标签: javascript node.js express

具有此文件,该文件呈现路线的视图。该文件是多语言网站项目的一部分。我从API获取翻译JSON对象,并使用Express缓存-内存模块将其保存到内存缓存一小时。它可以很好地缓存并加载翻译。但是在所有3种语言都缓存后,我无法切换它们。

例如:如果我使用/ en URI前缀访问了网站,它将加载并将其缓存在内存中,现在我使用/ id(印尼)URI前缀访问了相同的URL,它将很好地加载并再次对其进行缓存。但是在缓存JSON对象之后,我无法从/ id切换到/ en。我使用/ en访问URL,但仍然加载/ id翻译。

这是Routes控制器文件:

    // Pre Configuration
const langHelper = require('./helpers/lang')
const cache = require('memory-cache')
// Globals
let defaults = {}
let lang = null

// View Loader
const loadPage = async (req, res, pageMetaData) => {
  let locale = req.local;
  // Caching Language Keys for Speeding Up the Process
  if (cache.get(`lang-${locale}`) == null) {
    lang = await langHelper.getLanguage(req, res)
    // Cache Stays for One Hour
    cache.put(`lang-${locale}`, lang, 3600000)
  } else {
    lang = cache.get(`lang-${locale}`)
  }
  console.log(cache.get(`lang-${locale}`));
  // Default Pre-Defined Data for Views
  defaults.page = pageMetaData.page
  defaults.pageTitle = lang[pageMetaData.pageTitle]
  defaults.siteURL = req.siteUrl;
  defaults.lang = lang
  // Render the View
  res.render('layouts/main', defaults)
}

// Route Handlers
module.exports = {
  home: (req, res, errors = null) => {
    loadPage(req, res, {
      page: 'home',
      pageTitle: 'home_page_title',
      errors: errors
    })
  },
  error404: (req, res, errors = null) => {
    loadPage(req, res, {
      page: 'error404',
      pageTitle: 'website_title',
      errors: errors
    })
  }

}

0 个答案:

没有答案