GWT:与IE的JsonpRequestBuilder缓存URL问题

时间:2013-06-07 04:27:33

标签: internet-explorer gwt caching

我使用JsonpRequestBuilder在另一个站点上执行url。请关注我的代码:

public void execute() {
    JsonpRequestBuilder jsonp = new JsonpRequestBuilder();
    jsonp.requestObject(url, new AsyncCallback<JavaScriptObject>() {
        public void onFailure(Throwable throwable) {
        }

        public void onSuccess(JavaScriptObject jso) {
            JsArray<AdminSessionData> entries = asStartArrayOfResultData(jso);
            AdminSessionData entry = entries.get(0);
            if (entry.getSuccess()) {
                eventBus.fireEvent(new LogoutEvent());
            }
        }
    });
}

我的代码在Chrome和FireFox上运行良好,但我遇到了IE问题。 使用IE,第一次执行时运行良好,但第二次执行时,url无法执行,因为IE在第一次运行时通过url缓存此结果。 你看到这个问题了吗?请告诉我你的建议。感谢

2 个答案:

答案 0 :(得分:0)

你在devMode下运行吗?你在ProdMode中测试过吗?

如果从IE浏览网络控制台,你能看到什么?

您是否对缓存持肯定态度,因为该代码很常见......

答案 1 :(得分:0)

Jsonp使用脚本标记,这意味着它向服务器发出GET请求。

传统上,即使请求具有查询字符串,IE也缓存了GET请求,因此正常的解决方法是更改​​每个请求中的查询字符串。

但是每次创建新的JsonpRequest时gwt都会更改回调参数,因为它会创建一个具有唯一名称的新临时回调函数,因此除非重用JsonpRequest,否则不会有任何问题。

你可以做的最安全的事情就是更改服务网址,添加一个随机参数,如下所示:

  String sendUrl = (url.contains("?") ? "&" : "?") + 
           "foo=" + Duration.currentTimeMillis()