| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- var express = require('express');
- var router = express.Router();
- const models = require('../models');
- const config = require('../config/app');
- const redis = require('../libs/redis');
- const categories = require('../config/category');
- const { tags, tagsHashMap, getTagSeoTitle, getTagSeoDescription, getTagH1Title } = require('../config/tag');
- const languages = require('../config/language');
- const translate = require('../config/translate');
- const meta = require('../config/meta');
- const utils = require('../libs/utils');
- const DailyFactory = require('../models/daily-factory');
- const datefns = require('date-fns');
- const { format } = require('date-fns');
- const { getListBuilder } = require('../libs/pager');
- const CACHE_PREFIX = "tooltricks_v1";
- // const CACHE_EXPIRES = 60; // 60s刷新一次
- const CACHE_EXPIRES = 600;
- // tools-tricks
- router.get('/', function (req, res, next) {
- (async function () {
- let cacheKey = `${CACHE_PREFIX}_${req.originalUrl}`;
- let htmlData = await redis.getAsync(cacheKey);
- if (!htmlData) {
- let lang = utils.lang.ensureLanguage(req.params.lang);
- if (!req.cookies.lang || req.cookies.lang != lang) {
- res.cookie('lang', lang, config.cookie);
- }
- let title = 'titletitle';
- let description = 'description-description';
- let data = {
- title,
- description,
- languages,
- translate,
- lang,
- uri: req.originalUrl,
- };
- // 渲染EJS模板到内存中
- res.render('article', data, async (err, html) => {
- if (err) {
- // 如果渲染出错,调用next()传递错误
- return next(err);
- }
- // 渲染成功,存redis, 发送数据到客户端
- htmlData = html;
- try {
- await redis.set(cacheKey, htmlData, 'EX', CACHE_EXPIRES);
- } catch (e) {
- console.error(e);
- }
- res.send(htmlData);
- });
- } else {
- // 缓存命中, 直接发送缓存数据
- res.set({ 'X-From-Cache': 'true' });
- res.send(htmlData);
- }
- })().catch(next);
- });
- module.exports = router;
|