0

我正在尝试使用“Prerender.cloud”服务创建一个动态渲染示例。我采用了我的 URL 的预呈现版本。

我可以把代码结构放在这里,但这不是问题。

a) 我净化了 CSS。b) 我删除了所有不必要的代码和资源。c)我更改了资源顺序/组织以获得更好的速度。d) 优化图像。e) 减少了请求的大小。f) 减小了页面大小。

我将页面速度提高了 3 秒,并减小了 %200 的大小。

但主要问题在这里:

我有一个 rootdomain.com/example-dynamic-rendering 页面。这是原始页面。我想把这个服务给客户。

而且,我有我的预渲染示例,我想知道如何将这个静态 HTML 页面从同一个 URL 提供给搜索引擎用户代理?

您对此任务有任何想法或代码吗?

请帮忙。

4

1 回答 1

0

您可以使用 puppeteer 加载该动态页面/应用程序并加载它的 HTML 并将内容保存到 HTML 文件中。然后,如果 Google bot 抓取工具访问您的网站,您可以通过 robots.txt 文件要求他们抓取此 HTML 文件。

您可以在每次想要运行时运行此 puppeteer 脚本。也许您可以使用cron自动运行此脚本。

像这样的东西:

const puppeteer = require ('puppeteer')
const CronJob = require ('cron').CronJob
const fs = require ('fs-extra')

const crontask = '0 */1 * * *' // This will run script every hour
const urlDynamic = 'https://www.example.com' // Change this to your dynamic url
const staticFile = 'statichtml.html'

;(async () => {

    const browser = await puppeteer.launch ({
        headless: true,
        devtools: false
    })

    const [page] = await browser.pages ()

    const autorun = async () => {

        const open = await page.goto ( urlDynamic, { waitUntil: 'networkidle2', timeout: 0 } )

        const html = await page.content ()

        const save = await fs.writeFile ( staticFile, html )

    }

    const job = new CronJob(crontask, async () => {
        autorun ()
    })
    job.start()

})
于 2019-12-12T10:37:29.833 回答