云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

阿里云_阿里云速度快_精选特惠

小七 141 0

这篇博文解释了在管理sapui5应用程序中的更改时缓存控制的挑战,这些更改不是通过Fiori前端服务器托管的,以及我们可以如何处理这些更改那个。就像在SAP manufacturing suit中,SAP manufacturing Intelligence and Integration和Netweaver Java是运行SAP UI5应用程序的应用程序同一台服务器独立启动,并在AS上安装了本地库/UI组件。虽然我们在UI5应用程序中有AppCacheBuster和CacheBuster引导程序,但在这种情况下这些都不会有帮助。

我们将看到如何创建自己的自定义模块,用于缓存破坏和应用程序开发。

我是从SCN(下面的链接)中的一个答案中得到这个想法的,这个解决方案的基础是相同的。感谢克里斯蒂安·利比奇

https://answers.sap.com/questions/12973789/sap-mii-ui5-application-cache-buster-not-working-f.html?childToView=12975498#answer-12975498

浏览器缓存是计算机上的临时存储位置,用于存储浏览器下载的文件以显示网站。本地缓存的文件包括构成网站的任何文档,如html文件、CSS样式表、JavaScript脚本以及图形图像和其他多媒体内容。

当您重新访问网站时,浏览器检查同时更新的内容,只下载更新的文件或缓存中尚未存储的内容。这减少了用户和服务器端的带宽使用,并允许更快地加载页面。因此,当你有一个缓慢或有限的互联网连接时,缓存特别有用。

虽然浏览器中引入了缓存来提高web应用程序的整体性能,但这在应用程序更改管理方面也有很大的困难。当应用程序开发团队在UI组件或控制器功能中部署任何新更改时,为了使这些更改对最终用户有效可用,必须清除浏览器缓存。否则,在访问应用程序url时,browser总是首先尝试从磁盘缓存或内存缓存加载资源。不会加载服务器上已部署的任何新更改。

由于这一限制,引入了AppCacheBuster或CacheBuster等概念。但在这里重点关注的应用程序中,这些概念并没有多大帮助。差距仍然存在。

如果我们尝试查看UI5库以及它如何在浏览器中加载视图控制器之类的模块,我们可以看到有一个发起程序ui5loader-数据库.js它负责UI5中所有模块的同步和异步处理。它主要使用以下方法从服务器获取模块。

创建和XMLHttpRequest()。用模块url打开。注入子HTML标记,源代码为模块url.

在开始之前,我们将通过服务器上的一个文件来维护应用程序版本控制,并重写XMLHttpRequest().open方法和元素.appendChild()我们习惯的方法CacheBuster.js文件在服务器中创建的模块,并将该模块合并到索引.htm.

下面是我们将如何做到这一点。

创建一个版本.json归档并放置与我们的索引.html. 它将是一个简单的json文件,企业管理软件开发,结构如下。{"\u AppVersion":"1.1"}​创建CacheBuster.js文件在应用程序web根目录中。示例中使用的路径是"/webapp/controller"/CacheBuster.js文件"和"/脚本/CacheBuster.js文件".定义模块sap.ui.define(sap/ui/core/ComponentSupport"],函数(){"严格使用";});​访问版本.jsonjquery get方法在url中附加时间戳,以确保始终从服务器获取版本文件。$.get("/version.json?" +"&\uu="+new Date().getTime(),函数(数据){//.....//返回;},'json');一旦应用程序版本可用,数据与大数据专业,让我们重写XMLHttpRequest().open方法并元素.appendChild()函数并在所有模块URL中追加"&\u AppVersion="(函数(){代理变量=window.XMLHttpRequest.prototype文件.打开;window.XMLHttpRequest.prototype文件.open=函数(){var url=参数[1];如果(url.indexOf("?") == -1) {url=url+"?";}参数[1]=url+"&\u AppVersion="+data.\u AppVersion;返回代理。应用(本,[])。切片.调用(参数));};变量proxiedDomappend=元素.prototype.appendChild;元素.prototype.appendChild=函数(){控制台.log(论据);if(参数[0].tagName=="脚本"| |参数[0].tagName=="链接"){var url=参数[0].src!==未定义?参数[0].src:arguments[0].href;如果(url.indexOf("?") == -1) {url=url+"?";}if(参数[0].src!==未定义){参数[0]。src=url+"&\u AppVersion="+data.\u AppVersion;}else if(参数[0].href!==未定义){参数[0].href=url+"&\u AppVersion="+data.\u AppVersion;}返回ProxiedDomainAppend.apply应用(本,[])。切片.调用(参数));}其他{返回ProxiedDomainAppend.apply应用(这是论点);}};})();

最后模块看起来是这样的。

现在让我们看看AMD和非AMD的应用程序文件系统的编写方式以及如何使用CacheBuster.js文件应用程序中的模块。

AMD(异步模块定义)是一种以整体异步方式编写UI5应用程序的方法,对应用程序性能有显著的好处.

我们将使用下面的ui5 config参数将我们的模块锚定在引导的init上

data sap ui oninit="模块:VersionAMD/VersionAMD/controller/CacheBuster"

我们将使用下一行申报我们的模块。

jQuery.sap.require要求("版本NoNamed.CacheBuster");

让我们在中更新应用程序版本版本.json文件为1.2

!!。。是的,服务器云服务,它来自服务器再次为新版本部署。我们使用我们的定制模块和应用程序版本控制实现了cache buster