Spartacus开源项目提供了将Angular实现的电商Storefront站点作为PWA运行的功能。这提高了用户性能,改善了用户体验,添加了另一层缓存并减少了服务器端渲染(SSR)服务的负载。PWA的工作方式是,对于应用程序定义的文件列表,它会根据文件的内容生成文件哈希。客户端浏览器根据这个哈希值判断文件是否发生了变化。如果更改,则需要重新加载浏览器。每次重新部署(新部署)都会导致文件的哈希值发生变化。当构建Spartacus并将其部署到CCV2Cloud时,会发生以下步骤:构建应用程序:为必要的文件(包括index.html)生成哈希值将index.html中的占位符OCC_BACKEND_BASE_URL_VALUE替换为实际的OCCAPIurl启动StorefrontServiceSinceCCV2哈希生成后调整index.html,PWA因哈希不匹配导致无法正常工作,被认为是潜在的安全问题。从缓存资源列表中删除index.html并不是一个完整的解决方案。因为那样的话,每次整页reload都会进入SSR,所以用PWA意义不大。如果将Spartacus部署到CCV2,然后访问Storefront并遇到502badgatewayerror:ct()failed(111:Connectionrefused)whileconnectingtoupstream,client:10.244.2.13,server:~^.spartacus-app.$,请求:“GET/app-fr/fr/EUR/HTTP/1.1”,上游:“http://127.0.0.1:4200/app-fr/fr/EUR/”,主机:“something.model-t.cc.commerce.ondemand.com“一个可能的错误是,在Spartacus代码中:忘记在代码中注释occbaseUrl的配置:backend:{occ:{baseUrl:'https://localhost:9002',-->你可以通过应用//}}将其注释掉,这是因为OCC_BACKEND_BASE_URL_VALUE在后台被CCv2自动替换,CCv2将其替换为客户部署到的环境的api,因此,不需要在Spartacus中设置静态occbaseUrl-后者只需要在本地开发时设置。也就是说,app.module.ts中provideConfig()中backend.occ.baseUrl的值优先于meta标签中的值,所以如果你想让baseURL由meta标签动态驱动,不要定义provideConfig()中的baseUrl。
