Przeglądaj źródła

feat: 性能优化

zhangyuhan 3 lat temu
rodzic
commit
2533d165ea
1 zmienionych plików z 19 dodań i 9 usunięć
  1. 19 9
      bin/create-pdf/pdf.js

+ 19 - 9
bin/create-pdf/pdf.js

@@ -3,6 +3,19 @@ const logger = require('../log/index')
 const puppeteer = require('puppeteer');
 const fs = require('fs')
 const path = require('path')
+const {init} = require("../../../js-error/js/web");
+
+
+// 生成
+async function initBrowser () {
+  logger.log.debug('启动', new Date().toLocaleString())
+  return await puppeteer.launch({
+    headless: true,
+    args: ['--no-sandbox', '--disable-setuid-sandbox']
+  });
+}
+
+let browser = null
 
 function checkCache (fPath) {
   try {
@@ -30,6 +43,9 @@ function wait(ms) {
 
 
 async function createPDFOfURL (url, config = {}) {
+  if (!browser) {
+    browser = await initBrowser()
+  }
   config = Object.assign( {
     filename: '',
     dir: '',
@@ -56,27 +72,21 @@ async function createPDFOfURL (url, config = {}) {
       return result
     }
   }
-  // 生成
-  logger.log.debug('启动', new Date().toLocaleString())
-  const browser = await puppeteer.launch({
-    headless: true,
-    args: ['--no-sandbox', '--disable-setuid-sandbox']
-  });
+  const page = await browser.newPage();
   try {
-    const page = await browser.newPage();
     await page.setDefaultNavigationTimeout(0)
     await page.goto(url, {waitUntil: 'networkidle2'});
     await wait(config.delay || 1000)
     logger.log.debug('等待生成', new Date().toLocaleString())
 
     await page.pdf(outConfig);
-    await browser.close();
+    await page.close();
 
     logger.log.debug('当前时间', new Date().toLocaleString())
     return outConfig.path
   } catch (e) {
     logger.log.debug(e)
-    await browser.close();
+    await page.close();
   }
 }