【问题标题】:Caching Contentful content in Node environment在 Node 环境中缓存 Contentful 内容
【发布时间】:2018-09-19 00:51:23
【问题描述】:

我是一名年轻的开发人员,我致力于开发一个内容存储在 Contentful 上的网站。目前,每次重新加载页面,javascript都会通过API检索Contentful上的内容。

网站内容不太可能经常变化,所以想缓存一下。

该站点存储在 Netlify 上。 Link

所以我想我可以在 Node 构建中恢复 Contentful 上的内容,将其存储在“缓存”中,以便 javascript 在加载页面时使用。在 Contentful 上进行修改时,Webhook 会触发 Netlify 上的重建。

不知道我的想法对不对,谢谢你的帮助和解答。

【问题讨论】:

  • 我建议检查一个静态站点生成器,例如gatsbyjs.org

标签: javascript caching contentful


【解决方案1】:

Contentful 实际上在其服务中内置了缓存,因此您无需执行任何操作即可在您的网站上获得缓存的好处。引用内容丰富的文档:

对命中我们 CDN 缓存的请求没有任何限制,即该请求不计入您的速率限制,您可以无限量地命中缓存。对于确实达到内容交付 API 的请求,默认情况下强制执行每秒 78 个请求和每小时 280800 个请求的速率限制。根据您当前的计划,可能适用更高的费率限制。

详情请见https://www.contentful.com/developers/docs/references/content-delivery-api/#/introduction/api-rate-limits

如果您想对 Contentful API 进行额外的缓存,您可以使用一个 Node 库来为您完成。像APICache 这样的东西在这个用例中会很好用。

如果在发布新内容时重建堆栈(而不是在页面视图中呈现它)对您很重要,我建议您查看静态站点。 Contentful 有一些很棒的 webhook 支持,您可以与 Netlify 一起使用,以帮助在作者推送新内容时重建您的网站。查看这篇关于使用 Gatsby 的教程了解更多详情 - https://www.contentful.com/blog/2018/02/28/contentful-gatsby-video-tutorials/

【讨论】:

    【解决方案2】:

    单独缓存页面(而不是缓存整个站点)并使用 cron 作业将每个页面的缓存(可能每周)与当前版本进行比较似乎更好。如果不同,则为该页面重新生成缓存。此外,您可能希望手动触发它,可能是在部署时或在给定页面上发生更改的极少数情况下。

    无论如何,在您开始执行所有这些缓存操作之前,您应该检查您的网站是否会被请求淹没。如果没有,那么缓存可以推迟到以后,这将是明智的,因为如果您的站点的性质会随着时间的推移而发生变化并且经常发生变化,您可能需要不同的缓存,甚至根本不需要缓存。

    【讨论】:

    • 我添加了网站link,以便您更好地理解。该网站仅包含一页。
    • @KévinFuret 内容太小了,我认为为它实现缓存系统还为时过早。但是假设您需要缓存,那么在您的情况下实现服务器端缓存比根本不使用缓存系统更好吗?目前缓存系统的具体性能和/或内存和/或网络优势是什么?
    猜你喜欢
    • 2018-06-15
    • 1970-01-01
    • 2020-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-23
    相关资源
    最近更新 更多