From a36cbbc77384c862c1b4ba2496664ff777ede001 Mon Sep 17 00:00:00 2001 From: Chung Leong Date: Fri, 8 Mar 2019 11:18:44 -0500 Subject: [PATCH] Using keepalive connection when fetching. --- server/json-retriever.js | 5 ++++- server/page-renderer.js | 3 +++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/server/json-retriever.js b/server/json-retriever.js index 4c33c39..50df7f6 100644 --- a/server/json-retriever.js +++ b/server/json-retriever.js @@ -1,11 +1,14 @@ const CrossFetch = require('cross-fetch'); const WORDPRESS_HOST = process.env.WORDPRESS_HOST; +const WORDPRESS_PROTOCOL = 'http' + (/^https:/.test(WORDPRESS_HOST) ? 's' : ''); + +let agent = new require(WORDPRESS_PROTOCOL).Agent({ keepAlive: true }); async function fetch(path) { console.log(`Retrieving data: ${path}`); let url = `${WORDPRESS_HOST}${path}`; - let res = await CrossFetch(url); + let res = await CrossFetch(url, { agent }); let resText = await res.text(); let object; try { diff --git a/server/page-renderer.js b/server/page-renderer.js index d7d8395..d888b6a 100644 --- a/server/page-renderer.js +++ b/server/page-renderer.js @@ -1,6 +1,7 @@ const Bluebird = require('bluebird'); const FS = Bluebird.promisifyAll(require('fs')); const ReactDOMServer = require('react-dom/server'); +const HTTP = require('http'); const CrossFetch = require('cross-fetch'); const FrontEnd = require('./client/front-end'); @@ -15,10 +16,12 @@ async function generate(path, target) { let host = NGINX_HOST; // create a fetch() that remembers the URLs used let sourceURLs = []; + let agent = new HTTP.Agent({ keepAlive: true }); let fetch = (url, options) => { if (url.startsWith(host)) { sourceURLs.push(url.substr(host.length)); options = addHostHeader(options); + options.agent = agent; } return CrossFetch(url, options); };