在查看一些客户项目时,我注意到一旦返回SSR响应,浏览器仍然对页面和组件执行XHR请求。我使用的代码是:provideConfig({state:{ssrTransfer:{keys:{[CMS_FEATURE]:StateTransferType.TRANSFER_STATE},},},}),在返回的index.html中,可以查看脚本标签,默认情况下它的id应该是spartacus-app-state:。如果数据已经存在于index.html中,Spartacus不应该执行http取回。CMSHTTP请求始终在后台发生变化时执行。如果您不经常更改CMS,您可以考虑将routing.loadStrategy配置设置为ONCE。使用如下代码:provideConfig({loadStrategy:RouteLoadStrategy.ONCE,}),ChromeDeveloperTools控制台面板,出现如下错误信息:@ngrx/store:Thefeaturename"siteContext"doesnotexistinthestate,因此createFeatureSelector无法访问它。确保使用StoreModule.forRoot('siteContext',...)或StoreModule.forFeature('siteContext',...)将其导入到加载的模块中。如果默认状态是未定义的,例如路由器状态,则可以忽略此仅用于开发的警告消息。正确的代码如下:provideConfig({routing:{loadStrategy:RouteLoadStrategy.ONCE},}),在Spartacus2.0版本之前,实现状态持久化的唯一方法是使用一个简单的声明机制,称为storageSync,它允许您提供属性键以持久存储。之后,我们就可以使用Angular提供的TransferState机制来同步SSR和CSR之间的数据了。配置的传输状态应该对部分数据有效,而不是对所有数据有效。请参阅cms-store.module.ts、product-store.module.ts和site-context-store.module.ts的源代码。Spartacus在服务器上运行XHR请求,然后在应用程序启动时再次在客户端上运行。为了防止对服务器上已填充的状态进行不必要的后端调用,Spartacus在服务器端呈现的HTML中包含了部分NgRx状态。开发人员可以为CMS和产品(来自NgRx商店)配置状态传输,如下例所示:ConfigModule.withConfig({state:{ssrTransfer:{keys:{products:true,cms:true}}}});开发人员还可以将配置缩小到特定的状态子部分,如以下示例所示:});