prerender.io 通过 prerender-node 中间件,黑名单 hashbang

prerender.io via prerender-node middleware, blacklist hashbang

我通过 prerender.io expresss 中间件包 prerender-node 成功使用了 prerender.io 服务。

我没有注意到来自 bots/probes/redirects 的缓存结果有很多污染。

我正在尝试实施黑名单。

prerender-node state 我可以用类似的东西来做到这一点:

if (env === 'production') {
  console.log('production environment, prerender.io enabled')
  const prerender = require('prerender-node').set('prerenderToken', '******')
  prerender.blacklisted(
    [
      '#!',
      '/#!/',
      '^/#!/.*'
    ]
  )
  app.use(prerender)
}

在这个例子中,我只是试图过滤掉所有被缓存的 hahsbang URL。

https://example.com/#!/some/url

但它似乎不起作用。部署此代码并清除缓存结果后。缓存正在重新填充包含“#!”的结果。

Prerender-node README (https://github.com/prerender/prerender-node) 说明这应该是简单的正则表达式。
正则表达式模式在这里验证:https://regex101.com/

在与预渲染作者取得联系后,他们指出 #! 实际上被重定向为 ?_escaped_fragment_=

因此:

const prerender = require('prerender-node').set('prerenderToken', '******')
prerender.blacklisted('_escaped_fragment_');
app.use(prerender)

...似乎正在按预期工作。