【问题标题】:How to improve prerender speed for Twitterbot request?如何提高 Twitterbot 请求的预渲染速度?
【发布时间】:2019-12-27 13:10:58
【问题描述】:

对于我正在工作的项目,我在与项目相同的服务器上设置了预渲染服务,并使用 Nginx 将社交媒体请求传递给预渲染服务。

我观察到,如果授权用户将页面分享到 Twitter,它通常可以工作,即元标记图像和文本呈现为 Twitter 卡片。但是,如果用户共享了同一项目的其他页面,则当用户访问他的推特帖子时,通常不会呈现图像。

从 Nginx 访问日志来看,Twitterbots 似乎同时发出请求,并且预渲染服务太慢而无法渲染页面。 Twitterbot 请求中显示了 499 个状态,预呈现日志中显示了 504 个状态。

服务器托管在 UpCloud 上,使用 1 个 CPU 和 2 GB 内存数据计划。预渲染服务在 300MB 的 docker 容器中运行,它将缓存渲染页面 60 秒。由于内存配额,我犹豫是否增加缓存时长。

我一直在研究服务器日志和可能的解决方案,但除了重构 UI 之外,还没有提出其他解决方案。有没有其他人在这个问题上挣扎过,你如何克服它?

【问题讨论】:

    标签: twitter timeout prerender


    【解决方案1】:

    对于运行 Prerender 服务器来说,这似乎是一个功能非常不足的服务器。您可能希望至少给它更多的 RAM 和可能的另一个 CPU 以获得更好的性能。 504 不应该经常发生。

    根据您的页面预呈现所需的时间,强烈建议缓存时间超过 60 秒。除非您有一个非常高流量的网站,否则您可能不会在 60 秒内看到单个 URL 的许多缓存命中(来自在 twitter 上共享 URL 的用户)。

    【讨论】:

    • 感谢您的建议。我对缓存的经验很少。我正在为一个研究项目工作,流量很小。您能否就如何确定缓存的持续时间提出建议?另外,如果用户更新了页面,如何指示prerender渲染页面?
    • 当然!缓存的持续时间很大程度上取决于您的网站、爬虫访问(和重新访问)您的 URL 的频率,以及您的页面可能多久更新一次新信息。在 Prerender.io 上,我们缓存任何返回状态码 200 的页面,并继续重新缓存该页面以使用最新信息对其进行更新。这样,如果可能,我们总是可以提供缓存页面。如果您正在运行自己的 Prerender 服务器并使用具有过期时间的普通内存或 CDN 缓存,则需要构建自己的自定义逻辑来处理清除缓存页面。
    猜你喜欢
    • 2011-08-12
    • 2016-11-17
    • 1970-01-01
    • 2011-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-05
    • 2012-06-06
    相关资源
    最近更新 更多