Skip to content

Commit feda8dd

Browse files
The ability to cache pages after a request, This cache is currently useless
1 parent 5c88b91 commit feda8dd

File tree

1 file changed

+27
-2
lines changed

1 file changed

+27
-2
lines changed

services/prerender.js

Lines changed: 27 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
const puppeteer = require('puppeteer');
22
const config = require("../config");
3-
const { enabled } = require('../app');
3+
const fs = require('fs')
44

55
class PrerenderService {
66
url
7+
directory
78
constructor(url = 'https://example.org') {
89
this.url = url
910
}
@@ -12,9 +13,33 @@ class PrerenderService {
1213
const browser = await puppeteer.launch()
1314
const page = await browser.newPage()
1415
await page.goto(this.url)
15-
page.setJavaScriptEnabled(true)
16+
this.addPageToCache(page, browser)
1617
return page.content()
1718
}
19+
20+
/**
21+
* Create a slug
22+
* @param {String} title
23+
* @returns String
24+
*/
25+
createTitleSlug(title = '') {
26+
return title.split(' ').join('_').toLowerCase()
27+
}
28+
29+
/**
30+
* Add the fetched rendered page to cache
31+
* @param {Array} page
32+
*/
33+
async addPageToCache(page, browser) {
34+
const directory = new URL(this.url).hostname
35+
fs.mkdir(`./output/${directory}`, (err) => {
36+
console.warn(err);
37+
})
38+
const titleSlug = this.createTitleSlug(await page.title())
39+
fs.writeFileSync(`./output/${directory}/${titleSlug}.html`, (await page.content()), { encoding: "utf-8" })
40+
41+
await browser.close()
42+
}
1843
}
1944

2045
module.exports = PrerenderService

0 commit comments

Comments
 (0)