了解我们如何为每个 Webiny 网站获得出色的 SEO 支持,以及如何在无服务器环境中使用 SSR 使其超快运行。
本文系译文
内容概要
我确实意识到这是一篇很长的文章,请相信我不是故意写的很长。据我了解,有些人可能没有时间通篇读完,下面我准备了一个简短的内容概要:
- 单页应用程序 (SPAs) 很酷,但不幸的是,对 SEO 的支持不佳;
- 查阅这篇文章,了解有关在 Web 上进行渲染的不同方法,然后选择最适合您的用例的方法;
- 用 Webiny 构建的应用程序,我们尝试了「按需预渲染」(使用
chrome-aws-lambda)和「服务端渲染与激活」; - 只需几个无服务器服务就可以在 AWS 云中实现这两种方法,他们是 S3、Lambda、API 网关和 CloudFront。
- 就用户体验方面,如果初始加载屏幕(在应用程序初始化时显示)不是问题,并且搜索引擎优化是您唯一关心的问题,则按需进行预渲染是一种很好的方法,否则可以使用服务器端渲染和激活;
- 将更多的 RAM(1600 MB+)分配给实际上将进行预渲染的 Lambda 函数,并将最小的 RAM 分配给仅用于服务静态文件的 RAM(128MB 或 256MB);
- 尽管我们没有尝试过,但是您可能需要对预渲染的内容进行某种形式的缓存,以便通过更快地返回初始 HTML 来获得更好的 SEO 结果;
- 在使用服务端渲染与激活时,为生成 SSR HTML 的 Lambda 函数分配更多的 RAM;
- 通常,SSR 是一项资源密集型任务,它会阻止您足够快地为网站提供服务,因此您很可能需要实现某种缓存;
- 我们使用 CloudFront CDN 来缓存 SSR HTML,并根据您所构建的应用程序,在短期和长期缓存 TTL 之间进行选择;
- 如果要使用长期缓存,需要处理缓存失效的情况,这个会有点棘手;
- 有选择地进行缓存失效,或者说,如果可能的话,仅对必要的页面进行缓存失效–这样可以为您节省大量资金(缓存失效请求由 CloudFront 收取);
- 如果内容更改非常频繁,请使用短期缓存 TTL,因为这样更有效;
- 好消息是,使用 Webiny,上面提到的都可以处理并定期更新维护一些方法,如果您觉得不错的话,可以经常来 Webiny 查阅