首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使Spartacus服务器端呈现在负载下执行?

问如何使Spartacus服务器端呈现在负载下执行?
EN

Stack Overflow用户
提问于 2022-06-13 07:08:46
回答 2查看 187关注 0票数 2

我们在斯巴达克斯的前端激活了SSR,并试图测试它是否有效。为此,我们将步进SSR并在生产模式下运行。之后,我们使用JMeter创建了10个同时请求两个简单CMS站点的用户的负载。还添加了一项检查,以验证答案实际上是SSR响应,而不是CSR“空索引html”。大约80%的请求没有进行SSR,而是退回到CSR响应。如果我们将同时使用的用户数量减少到只有2,那么它大部分时间都能工作。

为了防止这种情况是由我们的自定义之一造成的,我们对Spartacus代码进行了相同的实验,并产生了相同的结果。

我们的SSR优化方案如下:

代码语言:javascript
复制
const engineConfig: SsrOptimizationOptions = {
  timeout: 5000, // spartacus default: 3000
  maxRenderTime: 300_000, // spartacus default: 300_000 (5min)
  concurrency: 20, // spartacus default: 20
  cache: false,
  cacheSize: 20,
  debug: false,
};

SSR引擎是否能够提供这样数量的同时请求?如果缓存被激活,它就能正常工作。但是我们有成千上万的页面,而且我们很可能无法缓存每一页。

EN

回答 2

Stack Overflow用户

发布于 2022-06-14 11:03:45

单个活动的SSR服务器无法处理大量负载。为了缓解性能问题,您可能需要一组Node.js进程和2层缓存:用于呈现的html (在CDN上)和OCC调用。

如果您拥有的页面数量并不多,或者您可以考虑提前录制/SSG(服务器端生成)所有页面,并将输出的html文件放入CDN中,而不是实时的SSR。

作为核心团队,我们将很快发布关于Spartacus的最佳SSR设置的新文档。但是,在它们发布之前,让我分享一些可能已经对您有帮助的早期草稿(来自按下):

票数 3
EN

Stack Overflow用户

发布于 2022-06-13 10:43:58

我们使用(无文档的) SsrOptimizationOption参数reuseCurrentRendering解决了这个问题。如果未设置此参数,则如果同一URL的另一个呈现同时进行,SSR呈现程序将中止SSR。

由于我们希望确保请求得到一个针对Crawler的SSR回复(SEO原因),我们需要确保SSR真的完成了,如果其他一些客户同时请求相同的URL的话。

我不确定这是否会产生任何副作用,或者为什么默认情况下reuseCurrentRendering没有设置为true .

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72598894

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档