Express JS - кеш-память .get () не работает - PullRequest
0 голосов
/ 25 сентября 2018

Имеет этот файл, который отображает представления для маршрутов.Этот файл является частью многоязычного веб-сайта проекта.Я получаю JSON-объект перевода из API и сохраняю его в кэш-памяти в течение одного часа с помощью модуля кэш-памяти Express.Хорошо кэширует и загружает переводы.Но после того, как все 3 языка кэшированы, я не могу переключаться между ними.

Например: если бы я посещал веб-сайт с помощью префикса URI / en, он загружал бы его и кэшировал в памяти, а теперь я посещал тот же URL с использованием префикса URI / id (индонезийский), хорошо загружался и кэшировал его.снова.Но после кэширования объекта JSON я не могу переключиться с / id на / en.Я захожу на URL с помощью / en, но все равно он загружает переводы / id.

Вот файл контроллера маршрутов:

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

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...