如果客户已经拥有 CDN 缓存,可以不启用 cache:true, cacheSize:xxx 。 这种内存缓存功能仅适用于没有生产就绪 CDN 的简单店面。也就是说,如果客户没有任何外部缓存服务(akamai / cloudflare / 其他),他们可以尝试,至少暂时,使用 SSR 服务内存缓存和 cache: true (最好也使用 cacheSize)。

concurrency 值设置得过大也不合适,这样会导致额外的性能下降。当太多请求同时命中一个 Pod 时,请求可能会超时。

我们引入了一个数组,用来记住 callbacks.

我们仅在渲染完成或 maxRenderTime 到达时清除数组。

如果单个 URL 的渲染任务花费大量时间(例如一分钟),则对该 URL 的所有请求显然都会超时。 但是我们将存储它们的回调直到 maxRenderTime 过去。 这意味着对于 1.5 分钟,数组可能会随着单个 URL 的增长而增长。 只有在 1.5 分钟后,我们才放弃并清除数组。 您可以同时渲染 50 个 URL。
我们可以在补丁中潜在地改进/优化:立即从数组中删除任何超时回调。 [由于所需额外重构的复杂性,我们决定不这样做]。
除此之外,根据流量,增加 Pod 中的内存限制可能会有所帮助。
此外,如果渲染任务真的(由于任何原因)“永远”挂起,无论如何都可能导致内存泄漏。

请注意 concurrency: 50(在 SsrOptimizationOptions 中)意味着 OptimizedSsrEngine 最多将执行 50 个并行渲染任务。
启用 reuseCurrentRendering,这意味着:一次最多可以渲染 50 个不同的 URL(不管并行请求的数量)。
这意味着:如果您一次发送 51 个或更多不同 URL 的并行请求,则第 51 个 URL(以及更多)的请求将立即回退到 CSR。 这是设计使然。

此外,如果您启用 debug:true,那么您将看到控制台消息 CSR fallback: Concurrency limit exceeded (edited)

一般来说,并发请求越多,无论是否缓存 OCC,平均响应越慢。

当 OCC 响应没有被缓存时,PDP 的 SSR 响应时间可能会有所不同,但当只有 1 个并发请求时,Maximum 甚至可以达到 7 秒。

与未缓存 OCC 时相比,缓存 OCC 时 SSR 响应时间平均快约 3 秒。

如果 OCC 未缓存,但使用静态基站配置而不是动态配置 - 平均响应时间更快,例如 从 1 到 15 个并发请求,我们使用静态 basesite 配置节省了 0.1-0.5 秒

理想情况下,如果可能,尽量避免 SSR 服务器过载。 相反,您应该在 SSR 之前设置一个带有缓存的 CDN。 并且您应该巧妙地对缓存进行部分预热,这样 SSR 服务器就不会因为所有预热请求而立即受到攻击。 缓存失效和重新预热也应该在某些部分巧妙地发生。

给 SSR 添加 OCC API 本地缓存用于测试的代码:

// global static reference - so it's shared among all rendered apps in SSR:
const CACHE = new Map<string, any>();@Injectable()
export class CustomCacheInterceptor implements HttpInterceptor {intercept(request: HttpRequest<unknown>,next: HttpHandler): Observable<HttpEvent<unknown>> {const { method, urlWithParams } = request;if (!['GET', 'HEAD'].includes(method)) {console.log('												

2021-10-28 SAP Spartacus SSR 性能方面的一些学习笔记相关推荐

  1. Spring Boot安装及使用(2021.10.28)

    Spring Boot安装及使用 2021.10.28 1.Spring Boot 简介 1.1 为何选择Spring? 1.2 Spring的功能 1.3 Spring项目的依赖包管理工具(Mave ...

  2. SAP Spartacus SSR模式启用失败的一个原因:SSR rendering exceeded timeout

    https://github.com/SAP/spartacus/issues/10638 错误消息:SSR rendering exceeded timeout, fallbacking to CS ...

  3. java性能调优实战学习笔记

    这是极客时间专栏<java性能调优实战>的部分学习笔记,个人感觉这个专栏内容不深,适合初学者,我只看了编程性能调优和数据库性能调优两块,其他的暂时不打算看了,后续有时间再看吧 有任何问题可 ...

  4. 关于 SAP Spartacus SSR 模式和 CSR 模式下重复发送 HTTP 请求调用 OCC API 的问题

    我使用基于版本 3.4.5 的 Schematics 创建了一个店面,并在 SSR 模式下运行它. 我在浏览器中访问 http://localhost:4000/ 通过 Chrome 开发工具我知道主 ...

  5. 关于 SAP Spartacus SSR 服务器返回的响应是否应该被缓存的问题

    分 SSR 和 CSR 两种情况进行讨论. when a page is CSR fallback, the CSR app is served with the Cache-Control:no-s ...

  6. SAP Spartacus SSR 模式下 index.html 页面渲染 fallback 到 CSR 之后的执行逻辑

    入口: 当SSR页面不能及时返回时,我们返回index.html: CSR 应用程序 CSR 应用会返回"Cache-Control: no-store"响应头.这将通知外部缓存系 ...

  7. SAP Spartacus SSR 模式下 index.html 页面的响应逻辑调试

    入口:所有的 regular route 都使用 universal engine: express 的 response 实现: express application 的实现: 静态资源,都从 b ...

  8. 2021.10.28打卡

    869. 重新排序得到 2 的幂 思路:预处理+哈希表 由于我们可以按任意顺序对数字进行排序,因此对于两个不同的整数a和b,如果十进制表示的字符数组,从小到大排序的结果是相同的,那么若a能够重排得到2 ...

  9. [2021.10.28]<呆头熊的开发日记>怪物AI

    以下是各个小怪继承的父类[Enemy]脚本. 主要功能包含: 1.怪物自身受到伤害: 2.受伤闪烁红色+粒子特效: 3.玩家与怪物触碰受到伤害. using System.Collections; u ...

最新文章

  1. http 里面的post和get区别
  2. Java并发编程75道面试题及答案
  3. CSP认证201412-2 Z字形扫描[C++题解]:模拟
  4. 实现滚到div时淡入效果
  5. JavaScript 图片上传预览效果
  6. 贪心应用--汽车加油次数问题
  7. 分享:假如浏览器和搜索引擎不再支持外部链接跳转,优化何去何从呢?
  8. Springboot整合mybatis框架(含实例Demo)
  9. http协议中content-length 以及chunked编码分析
  10. 开关造成的毛刺_干冰清洗机模具清洗机干冰去毛刺机注意事项
  11. 单链表的读取、插入与删除
  12. jsp ejb mysql_关于UTF-8 JBoss,JSP,EJB,MySQL,STRUTS的中文处理方案
  13. iOS开发中常用的宏
  14. 使用eclipse搭建maven项目Java web项目
  15. 阶段3 2.Spring_10.Spring中事务控制_8 spring基于纯注解的声明式事务控制
  16. NXP JN5169 ZigBee 3.0开发环境搭建
  17. rails分页(kaminari)
  18. Uva 11552 Fewest Flops
  19. 移动端(手机端)页面自适应解决方案—rem布局篇 1
  20. 下载的问题,attachment什么意思??

热门文章

  1. java定时任务的两种实现方式
  2. java中的instanceof的用法
  3. cdh编译安装支持各种压缩格式
  4. Java内存泄漏问题
  5. 看人家如何拿到腾讯阿里的offer
  6. Android的配置界面PreferenceActivity
  7. [IPhone] 仅在Debug编译的NSLog
  8. 14: linux实用命令
  9. 福大软工 · BETA 版冲刺前准备(团队)
  10. linux中查看文件指定行的数据