SPA(单页面应用程序)始终从缓存加载

时间:2015-09-17 15:13:11

标签: caching xmlhttprequest sapui5 html5-appcache application-cache

我有一个使用OpenUI5框架编写的SPA(单页面应用程序)。 它运行良好(当我在调试模式或使用缓存杀手https://chrome.google.com/webstore/detail/cache-killer/jpfbieopdmepaolggioebjmedmclkbap时)但现在我已经在服务器apache上推送了应用程序:这里问题已经开始......

用户没有安装缓存杀手,我想更新服务器上的应用程序,并在连续刷新时立即在用户个人电脑上安装新版本的应用程序。

在我的应用程序中,我有一系列选项卡:每个选项卡都有一个内容,每个选项卡有两个不同的内容(显示片段内容和更改片段内容)。 当我加载页面时,默认情况下,选项卡由显示片段填充;然后我按下一个按钮,每个标签的内容都会切换到更改片段。

enter image description here

问题是我在第一页加载后检索的所有片段都被加载(from cache) ...

我尝试使用清单应用程序缓存和各种元标记(请参阅Chaching with single-page application),但问题没有改变,它仍然存在。

这是diplay片段的请求 - 响应头(从服务器正确加载)

General:

Request URL:http://10.7.1.96/www/temp_ftp_grunt/view/tab/article/TabAnagrDisplay.fragment.xml
Request Method:GET
Status Code:304 Not Modified

Response header:

HTTP/1.1 304 Not Modified
Date: Thu, 17 Sep 2015 14:45:43 GMT
Server: Apache/2.4.7 (Win32) OpenSSL/1.0.1e PHP/5.5.6
Connection: Keep-Alive
Keep-Alive: timeout=5, max=46
ETag: "38b6-51ff07d7bfe81"

Request Header:

GET /www/temp_ftp_grunt/view/tab/article/TabAnagrDisplay.fragment.xml HTTP/1.1
Host: 10.7.1.96
Connection: keep-alive
Cache-Control: max-age=0
Accept: application/xml, text/xml, */*; q=0.01
X-Requested-With: XMLHttpRequest
User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.93 Safari/537.36
Referer: http://10.7.1.96/www/temp_ftp_grunt/
Accept-Encoding: gzip, deflate, sdch
Accept-Language: it,en-US;q=0.8,en;q=0.6
If-None-Match: "38b6-51ff07d7bfe81"
If-Modified-Since: Thu, 17 Sep 2015 12:24:01 GMT

这是从缓存

加载的更改片段
General:

Request URL:http://10.7.1.96/www/temp_ftp_grunt/view/tab/article/TabAnagrChange.fragment.xml
Request Method:GET
Status Code:200 OK (from cache)

Response header:

Accept-Ranges:bytes
Content-Length:23642
Content-Type:application/xml
Date:Thu, 17 Sep 2015 14:44:47 GMT
ETag:"5c5a-51ff1965857b1"
Last-Modified:Thu, 17 Sep 2015 13:42:33 GMT
Server:Apache/2.4.7 (Win32) OpenSSL/1.0.1e PHP/5.5.6"

Request Header:

Provisional headers are shown
Accept:application/xml, text/xml, */*; q=0.01
Referer:http://10.7.1.96/www/temp_ftp_grunt/
User-Agent:Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.93 Safari/537.36
X-Requested-With:XMLHttpRequest

对于OpenUI5开发人员:我已经在这个模式中加载了片段:

1.在控制器的onInit函数中显示包含选项卡列表

的片段
    var oTab = new sap.m.IconTabFilter();
            oTab.addContent(myfragment);
            tabBar.addItem(oTab);

2.通过tabBar.removeAllItems();移除显示frg的函数更改片段,并以1的相同模式添加新frg。

我试图找到解决问题的方法;我已阅读此https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/http-caching和此http://alistapart.com/article/application-cache-is-a-douchebag条款,但我无法找到问题的解决方案。此处建议的缓存占用https://openui5.hana.ondemand.com/#docs/guide/91f080966f4d1014b6dd926db0e91070.html Force clear cache in OpenUI5需要SAP后端

1 个答案:

答案 0 :(得分:2)

我们遇到了同样的问题,并通过为片段定义新路径来管理

sap.ui.localResources("fragments");

默认情况下,片段与Libraries(资源)位于同一文件夹中,并始终缓存。