2014-09-23 2 views
1

내 Node-Express 응용 프로그램에서 Postgre를 주 데이터로 사용하고 Redis를 캐시 시스템으로 사용하고 있습니다.EJS를 렌더링하고 Redis에 저장

방문자가 URL을 요청하면 내 앱이 json에게 Redis에게 요청합니다. 사용할 수없는 경우 Postgre에게 요청하고 json을 Redis에 저장 한 다음 EJS 템플릿을 렌더링합니다. 같은 URL에 대한 다음 요청은 Redis에서 json을 가져 와서 템플릿을 렌더링합니다.

이제 CPU 사용량을 줄이기 위해 json 대신 전체 렌더링 된 템플릿을 Redis에 저장하려고합니다. 나는이 트릭을 시도했지만 작동하지 않았다 : 그것을 수행하는 방법

Render ejs file in node.js

어떤 아이디어 나 제안을 ??

미리 도움을 주셔서 감사합니다.

답변

2

res.render()은 마지막 인수로 콜백을 허용한다는 Express API 참조를 보여줍니다. 이 콜백은 (err, html)으로 호출되므로 콜백을 전달하고 (문자열) html을 redis에 저장하면됩니다.

+0

당신의 답은 저에게 큰 도움이됩니다. 이제 Redis에 저장하고 렌더링 된 HTML 콘솔을 인쇄 할 수도 있지만 사용자가 시간 초과를 얻을 수 있습니다. 렌더링 된 템플릿 응답을 브라우저에 보내지 않는 것 같습니다. 이 얼마나 지금 내 보이는 기능 : res.render ('home.ejs', { 호스트 : appConfig.app.url + '/' }, 기능 (ERR, HTML) { 경우 ((오류), 실행 오류 ', 오류); redis.setex (rediskey, redisexp_2h, 문자열 (html)); console.log (html); }}); – junihh

+1

예, 콜백을 추가하면 클라이언트에 대한 자동 응답이 중지됩니다. 따라서 콜백 내에서 수동으로'res.send (html);'를 수행해야한다. – mscdex

관련 문제