coloring-pages.js 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. var express = require('express');
  2. var router = express.Router();
  3. const redis = require('../../libs/redis');
  4. const { coloringList } = require('./config');
  5. const CACHE_PREFIX = "art_v2";
  6. // const CACHE_EXPIRES = 60; // 60s刷新一次
  7. const CACHE_EXPIRES = 600;
  8. // coloring pages 页路由
  9. router.get('/', function (req, res, next) {
  10. (async function () {
  11. let cacheKey = `${CACHE_PREFIX}_coloring-pages`;
  12. let htmlData = await redis.getAsync(cacheKey);
  13. // htmlData = null;
  14. if (!htmlData) {
  15. let data = {
  16. uri: req.originalUrl,
  17. list: coloringList,
  18. };
  19. // 渲染EJS模板到内存中
  20. res.render('v2/coloring-pages', data, async (err, html) => {
  21. if (err) {
  22. // 如果渲染出错,调用next()传递错误
  23. return next(err);
  24. }
  25. // 渲染成功,存redis, 发送数据到客户端
  26. htmlData = html;
  27. try {
  28. await redis.set(cacheKey, htmlData, 'EX', CACHE_EXPIRES);
  29. } catch (e) {
  30. console.error(e);
  31. }
  32. res.send(htmlData);
  33. });
  34. } else {
  35. // 缓存命中, 直接发送缓存数据
  36. res.set({ 'X-From-Cache': 'true' });
  37. res.send(htmlData);
  38. }
  39. })().catch(next);
  40. });
  41. module.exports = router;