在一个项目中,我们遇到了这样一个问题:当我们最小化JavaScript时,HTML被追加,导致JavaScript文件不再有效,永久免费的云服务器,浏览器无法评估JavaScript。
在这篇博文中,大数据风控,我想解释一下这个问题的行为和原因,以及我们如何解决这个问题。
Wro4j是通过wro.xml文件看到了吗(https://wro4j.readthedocs.io/en/stable/WroFileFormat/). 这里定义了Javascript文件和CSS文件,它们应该最小化。Wro4j还支持通过通配符加载资源的可能性(https://wro4j.readthedocs.io/en/stable/WildcardSupport/)
要加载资源,有多个资源定位器可用(https://wro4j.readthedocs.io/en/stable/ResourceTypes/). 基于wro.xml文件.
默认行为是使用ServletContextureLocator,它将通过dispatcher查找资源。如果无法加载文件,将尝试从外部加载具有当前请求上下文的文件。
这是Wro4j的一个功能,也提供了加载外部资源的可能性。为此,将使用UrlUriLocater。在此定位器中,将检查URL是否为通配符。不幸的是,该检查正在使用一个标记"enablewandcards",该标记被初始化为false(https://github.com/wro4j/wro4j/blob/v1.9.0/wro4j core/src/main/java/ro/isdc/wro/model/resource/locator/wildcard/WildcardUriLocatorSupport.java#L32)
第二个问题是超级方法"haswandcard"使用的模式也返回false if"HTTP"是URL的一部分(https://github.com/wro4j/wro4j/blob/b09a44747011006578d3a916fa464a39f633e860/wro4j core/src/main/java/ro/isdc/wro/model/resource/locator/wildcard/DefaultWildcardStreamLocator.java#L52).
因此以下URI用于检索外部资源:
https://localhost:9002/全部_responsive.js//ui/responsive/common/js/cms/*.js
Hybris
在Hybris中,大数据的趋势,未找到页面的默认行为是显示自定义404页面。这对于向用户显示一个漂亮的页面是必要的wro.xml文件来自Hybris OOTB的配置看起来是这样的:
通配符行
是从组件和/或其他店面加载项加载其他Javascript所必需的,国内云服务器哪家好,因此是店面定制工作的一部分。
问题
在wro.xml文件以下通配符无效已定义:
如果cms文件夹中不存在任何文件,将尝试通过外部定位器加载这些文件,大数据处理平台,从而产生如下URI:
https://localhost:9002/全部_responsive.js//ui/responsive/common/js/cms/*.js
不幸的是,如果调用的页面在hybris中不存在,返回的自定义404页带有代码200(确定),而不是HTTP状态404(未找到)。(见de.hybris.平台是的cceleratorstorefront.controllers.pages页面博士efaultPageController.java#获取)
这导致wro4j使用响应(以404页HTML的形式)并将它们附加到最小化的JavaScript中。
可能的解决方案