tips-tricks.js 8.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327
  1. var express = require('express');
  2. var router = express.Router();
  3. const config = require('../../config/app');
  4. const models = require('../../models');
  5. const common = require('./common');
  6. const utils = require('../../libs/utils');
  7. const { getListBuilder } = require('../../libs/pager');
  8. const redis = require('../../libs/redis');
  9. const { coloringData } = require('./config');
  10. const CACHE_PREFIX = "art_v2";
  11. // const CACHE_EXPIRES = 60; // 60s刷新一次
  12. const CACHE_EXPIRES = 600;
  13. // 首页路由
  14. router.get('/', function (req, res, next) { // 限制严格一点
  15. (async function () {
  16. let cacheKey = `${CACHE_PREFIX}_tips-tricks`;
  17. let htmlData = await redis.getAsync(cacheKey);
  18. htmlData = null;
  19. if (!htmlData) {
  20. let data = {
  21. uri: req.originalUrl,
  22. };
  23. // 渲染EJS模板到内存中
  24. res.render('v2/tips-tricks', data, async (err, html) => {
  25. if (err) {
  26. // 如果渲染出错,调用next()传递错误
  27. return next(err);
  28. }
  29. // 渲染成功,存redis, 发送数据到客户端
  30. htmlData = html;
  31. try {
  32. await redis.set(cacheKey, htmlData, 'EX', CACHE_EXPIRES);
  33. } catch (e) {
  34. console.error(e);
  35. }
  36. res.send(htmlData);
  37. });
  38. } else {
  39. // 缓存命中, 直接发送缓存数据
  40. res.set({ 'X-From-Cache': 'true' });
  41. res.send(htmlData);
  42. }
  43. })().catch(next);
  44. });
  45. router.get('/benefit-of-coloring-pages', function (req, res, next) {
  46. (async function () {
  47. let cacheKey = `${CACHE_PREFIX}_benefit-of-coloring-pages`;
  48. let htmlData = await redis.getAsync(cacheKey);
  49. htmlData = null;
  50. if (!htmlData) {
  51. let data = {
  52. uri: req.originalUrl,
  53. };
  54. // 渲染EJS模板到内存中
  55. res.render('v2/benefit-of-coloring-pages', data, async (err, html) => {
  56. if (err) {
  57. // 如果渲染出错,调用next()传递错误
  58. return next(err);
  59. }
  60. // 渲染成功,存redis, 发送数据到客户端
  61. htmlData = html;
  62. try {
  63. await redis.set(cacheKey, htmlData, 'EX', CACHE_EXPIRES);
  64. } catch (e) {
  65. console.error(e);
  66. }
  67. res.send(htmlData);
  68. });
  69. } else {
  70. // 缓存命中, 直接发送缓存数据
  71. res.set({ 'X-From-Cache': 'true' });
  72. res.send(htmlData);
  73. }
  74. })().catch(next);
  75. });
  76. router.get('/choose-the-right-coloring-tools', function (req, res, next) {
  77. (async function () {
  78. let cacheKey = `${CACHE_PREFIX}_choose-the-right-coloring-tools`;
  79. let htmlData = await redis.getAsync(cacheKey);
  80. htmlData = null;
  81. if (!htmlData) {
  82. let data = {
  83. uri: req.originalUrl,
  84. };
  85. // 渲染EJS模板到内存中
  86. res.render('v2/choose-the-right-coloring-tools', data, async (err, html) => {
  87. if (err) {
  88. // 如果渲染出错,调用next()传递错误
  89. return next(err);
  90. }
  91. // 渲染成功,存redis, 发送数据到客户端
  92. htmlData = html;
  93. try {
  94. await redis.set(cacheKey, htmlData, 'EX', CACHE_EXPIRES);
  95. } catch (e) {
  96. console.error(e);
  97. }
  98. res.send(htmlData);
  99. });
  100. } else {
  101. // 缓存命中, 直接发送缓存数据
  102. res.set({ 'X-From-Cache': 'true' });
  103. res.send(htmlData);
  104. }
  105. })().catch(next);
  106. });
  107. router.get('/color-combinations-guide', function (req, res, next) {
  108. (async function () {
  109. let cacheKey = `${CACHE_PREFIX}_color-combinations-guide`;
  110. let htmlData = await redis.getAsync(cacheKey);
  111. htmlData = null;
  112. if (!htmlData) {
  113. let data = {
  114. uri: req.originalUrl,
  115. };
  116. // 渲染EJS模板到内存中
  117. res.render('v2/color-combinations-guide', data, async (err, html) => {
  118. if (err) {
  119. // 如果渲染出错,调用next()传递错误
  120. return next(err);
  121. }
  122. // 渲染成功,存redis, 发送数据到客户端
  123. htmlData = html;
  124. try {
  125. await redis.set(cacheKey, htmlData, 'EX', CACHE_EXPIRES);
  126. } catch (e) {
  127. console.error(e);
  128. }
  129. res.send(htmlData);
  130. });
  131. } else {
  132. // 缓存命中, 直接发送缓存数据
  133. res.set({ 'X-From-Cache': 'true' });
  134. res.send(htmlData);
  135. }
  136. })().catch(next);
  137. });
  138. router.get('/coloring-techniques-for-beginners', function (req, res, next) {
  139. (async function () {
  140. let cacheKey = `${CACHE_PREFIX}_coloring-techniques-for-beginners`;
  141. let htmlData = await redis.getAsync(cacheKey);
  142. htmlData = null;
  143. if (!htmlData) {
  144. let data = {
  145. uri: req.originalUrl,
  146. };
  147. // 渲染EJS模板到内存中
  148. res.render('v2/coloring-techniques-for-beginners', data, async (err, html) => {
  149. if (err) {
  150. // 如果渲染出错,调用next()传递错误
  151. return next(err);
  152. }
  153. // 渲染成功,存redis, 发送数据到客户端
  154. htmlData = html;
  155. try {
  156. await redis.set(cacheKey, htmlData, 'EX', CACHE_EXPIRES);
  157. } catch (e) {
  158. console.error(e);
  159. }
  160. res.send(htmlData);
  161. });
  162. } else {
  163. // 缓存命中, 直接发送缓存数据
  164. res.set({ 'X-From-Cache': 'true' });
  165. res.send(htmlData);
  166. }
  167. })().catch(next);
  168. });
  169. router.get('/how-to-display-your-coloring-masterpieces', function (req, res, next) {
  170. (async function () {
  171. let cacheKey = `${CACHE_PREFIX}_display-your-coloring-masterpieces`;
  172. let htmlData = await redis.getAsync(cacheKey);
  173. htmlData = null;
  174. if (!htmlData) {
  175. let data = {
  176. uri: req.originalUrl,
  177. };
  178. // 渲染EJS模板到内存中
  179. res.render('v2/display-your-coloring-masterpieces', data, async (err, html) => {
  180. if (err) {
  181. // 如果渲染出错,调用next()传递错误
  182. return next(err);
  183. }
  184. // 渲染成功,存redis, 发送数据到客户端
  185. htmlData = html;
  186. try {
  187. await redis.set(cacheKey, htmlData, 'EX', CACHE_EXPIRES);
  188. } catch (e) {
  189. console.error(e);
  190. }
  191. res.send(htmlData);
  192. });
  193. } else {
  194. // 缓存命中, 直接发送缓存数据
  195. res.set({ 'X-From-Cache': 'true' });
  196. res.send(htmlData);
  197. }
  198. })().catch(next);
  199. });
  200. router.get('/how-to-color-online', function (req, res, next) {
  201. (async function () {
  202. let cacheKey = `${CACHE_PREFIX}_how-to-color-online`;
  203. let htmlData = await redis.getAsync(cacheKey);
  204. htmlData = null;
  205. if (!htmlData) {
  206. let data = {
  207. uri: req.originalUrl,
  208. };
  209. // 渲染EJS模板到内存中
  210. res.render('v2/how-to-color-online', data, async (err, html) => {
  211. if (err) {
  212. // 如果渲染出错,调用next()传递错误
  213. return next(err);
  214. }
  215. // 渲染成功,存redis, 发送数据到客户端
  216. htmlData = html;
  217. try {
  218. await redis.set(cacheKey, htmlData, 'EX', CACHE_EXPIRES);
  219. } catch (e) {
  220. console.error(e);
  221. }
  222. res.send(htmlData);
  223. });
  224. } else {
  225. // 缓存命中, 直接发送缓存数据
  226. res.set({ 'X-From-Cache': 'true' });
  227. res.send(htmlData);
  228. }
  229. })().catch(next);
  230. });
  231. router.get('/how-to-color-mandala-coloring-page', function (req, res, next) {
  232. (async function () {
  233. let cacheKey = `${CACHE_PREFIX}_how-to-color-online`;
  234. let htmlData = await redis.getAsync(cacheKey);
  235. htmlData = null;
  236. if (!htmlData) {
  237. let data = {
  238. uri: req.originalUrl,
  239. };
  240. // 渲染EJS模板到内存中
  241. res.render('v2/how-to-color-mandala', data, async (err, html) => {
  242. if (err) {
  243. // 如果渲染出错,调用next()传递错误
  244. return next(err);
  245. }
  246. // 渲染成功,存redis, 发送数据到客户端
  247. htmlData = html;
  248. try {
  249. await redis.set(cacheKey, htmlData, 'EX', CACHE_EXPIRES);
  250. } catch (e) {
  251. console.error(e);
  252. }
  253. res.send(htmlData);
  254. });
  255. } else {
  256. // 缓存命中, 直接发送缓存数据
  257. res.set({ 'X-From-Cache': 'true' });
  258. res.send(htmlData);
  259. }
  260. })().catch(next);
  261. });
  262. module.exports = router;