后台ZK和损坏的classWebResources

2020-09-10 16:37发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


你好社区。

我们刚刚将Backoffice产品座舱添加到了系统中,以摆脱旧产品座舱。 但是,在部署时,我们注意到该接口已损坏,并且由于在一个环境中的浏览器中存在JS和CSS问题,因此在加载组件时遇到了问题。 请注意,我们有三种环境,DEV,QA和PROD。 在质量检查中,我们没有在DEV中遇到此问题,因此执行重置所有操作或重新启动服务器都没有关系,因为问题似乎是Backoffice的用户已在浏览器中缓存了资源。

如果您重置浏览器中的缓存,则Backoffice可以正常工作而不会出现任何问题。 作为开发人员,我们对此没有任何问题,但是Backoffice的用户不喜欢这种不便之处,并且忘记了这种事情会发生。 由于某种原因,他们的浏览器(无论是Firefox,IE还是Chrome)都弄乱了资源缓存,并且不了解何时将新内容添加到Backoffice。

我尝试搜索此ZK问题。 因为我认为ZK不仅仅是Backoffice应用程序的问题,所以如果我做这个假设不正确,请更正我。 我发现的是:

https: //www.zkoss.org/wiki/ZK_Configuration_Reference/zk.xml/The_Library_Properties/org.zkoss.web.classWebResource.cache#cite_note-0

这听起来像可以解决我们因Backoffice中的Web资源损坏而不断发生但会影响性能的问题。 尽管目前我除了禁用资源缓存外没有其他选择,因为令人烦恼的是我们不能保证发行版本的质量,因为我们的用户浏览器可能会破坏我们看不到的本​​地网络资源,并且 没有办法自动解决这些问题,以提供良好的用户体验。

不幸的是,我无法指定何时以及如何发生这种情况,因为服务器上的所有内容看起来都是正确的,我们还没有找到一种方法来重新创建它,因为它可以在我的浏览器中工作,但在用户X中却无法,然后他们查看了 同事,也可以使用由IT运营团队自动更新的Internet Explorer浏览器版本的同一家公司进行工作。 我们知道的唯一解决方案是重置浏览器中的缓存,然后一切正常,好像什么都没发生。

打开开发工具时,我会附上浏览器状态的图像:

替代文本

(196.2 kB)

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


你好社区。

我们刚刚将Backoffice产品座舱添加到了系统中,以摆脱旧产品座舱。 但是,在部署时,我们注意到该接口已损坏,并且由于在一个环境中的浏览器中存在JS和CSS问题,因此在加载组件时遇到了问题。 请注意,我们有三种环境,DEV,QA和PROD。 在质量检查中,我们没有在DEV中遇到此问题,因此执行重置所有操作或重新启动服务器都没有关系,因为问题似乎是Backoffice的用户已在浏览器中缓存了资源。

如果您重置浏览器中的缓存,则Backoffice可以正常工作而不会出现任何问题。 作为开发人员,我们对此没有任何问题,但是Backoffice的用户不喜欢这种不便之处,并且忘记了这种事情会发生。 由于某种原因,他们的浏览器(无论是Firefox,IE还是Chrome)都弄乱了资源缓存,并且不了解何时将新内容添加到Backoffice。

我尝试搜索此ZK问题。 因为我认为ZK不仅仅是Backoffice应用程序的问题,所以如果我做这个假设不正确,请更正我。 我发现的是:

https: //www.zkoss.org/wiki/ZK_Configuration_Reference/zk.xml/The_Library_Properties/org.zkoss.web.classWebResource.cache#cite_note-0

这听起来像可以解决我们因Backoffice中的Web资源损坏而不断发生但会影响性能的问题。 尽管目前我除了禁用资源缓存外没有其他选择,因为令人烦恼的是我们不能保证发行版本的质量,因为我们的用户浏览器可能会破坏我们看不到的本​​地网络资源,并且 没有办法自动解决这些问题,以提供良好的用户体验。

不幸的是,我无法指定何时以及如何发生这种情况,因为服务器上的所有内容看起来都是正确的,我们还没有找到一种方法来重新创建它,因为它可以在我的浏览器中工作,但在用户X中却无法,然后他们查看了 同事,也可以使用由IT运营团队自动更新的Internet Explorer浏览器版本的同一家公司进行工作。 我们知道的唯一解决方案是重置浏览器中的缓存,然后一切正常,好像什么都没发生。

打开开发工具时,我会附上浏览器状态的图像:

替代文本

(196.2 kB)
付费偷看设置
发送
3条回答
SAP小菜
1楼-- · 2020-09-10 16:53

进一步探讨这一点,我发现cockpitng样式导入与问题无关。 这是陈旧的javascript。 HTML发生了变化,因为我们添加了产品座舱,但javascript并未更新。 它被缓存在浏览器中。 我们还找出了为什么它破坏了用户X而不是用户Y的原因。用户X在缓存过期之前使用了Backoffice,因此用户X拥有了缓存的JS。 用户Y一段时间未使用Backoffice,因此JS已过期,因此用户立即获得了新的JS。 这样用户就没有问题了。

我是小鹏鹏啊
2楼-- · 2020-09-10 16:44

我现在对此有更多了解。 默认情况下,ZK使用以下设置来对所有JavaScript进行哈希处理:org.zkoss.zk.ui.http.SimpleWebApp。 以下方法是ZK创建的哈希的基础:org.zkoss.zk.ui.impl.AbstractWebApp#getBuild。

Hybris提供了两个ZK库jar。 一个"补丁"和一个标准ZK。 两者都提供这样的课程。 我不知道哪个加载。 以任何方式。 在Hybris的修补版本中,它读取了XXX/bin/ext-cockpit/cockpit/lib/zk-3.6.4-hybris-patched.jar!/metainfo/zk/build

它将文件中的内容用作资源哈希的基础。 根据ZK文档,如果您希望始终在服务器上重新启动,请让客户端重新加载在每次部署中必须拥有的所有Web资源,然后更改此哈希数,以使浏览器收到资源更改的通知。 对我来说,它不会改变所有的蚂蚁。 因此,资源会跨部署进行缓存。

我还没有真正想出更多的方法,但是如果我可以使用自己的构建方法扩展上述类,该方法将在每次构建或部署时重新计算资源哈希,那么一切将开始工作,我们的用户将永远不必 再次面对这个问题。

SAP砖家
3楼-- · 2020-09-10 16:59

我刚刚想到了一些事情。 如果Hybris Backoffice ZK使用此文件来创建资源哈希,那么我们可能会在先决条件构建步骤中将其翻转一下,然后哈希将发生变化,而不是尝试添加我们自己的扩展类。

对于具有Backoffice ZK框架的实际实施经验的人来说,这可能会给出一些反馈,以及最初的想法是什么。 Hybris的人显然从默认的ZK哈希构建文件中更改了文件,该文件只说ZK版本的发布日期,而在Hybris修补版本中却说完全不同。 也许是Hybris的内部版本号。

无论如何,这里是官方的ZK文档: https://www。 zkoss.org/wiki/ZK_Developer%27s_Reference/Performance_Tips/Control_resource_caching

值得一提。 我对ZK的经验有限,因为我有更多的(斯巴达克斯)/棱角背景经验。 因此,除了文档告诉我的内容之外,我真的不了解其他任何内容。

一周热门 更多>