具有此文件,该文件呈现路线的视图。该文件是多语言网站项目的一部分。我从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
})
}
}