`

关于GWT中RequestBuilder的缓存问题

阅读更多
今天遇到一个需求, 就是在前段每隔1分钟遍发送请求到后台读取当前数据库状态, 本来感觉很简单的问题花了好久才解决,而罪魁祸首就是缓存, 原代码如下:

	public  void checkDBStatusTrigger(){

    	Timer refreshTimer = new Timer() {
			public void run() {
		      
				RequestBuilder builder = new RequestBuilder(RequestBuilder.GET,  "chcekDBStatus.do");
				builder.setHeader("Cache-Control","no-cache"); 
				
				try {
					builder.sendRequest(null, new RequestCallback() {
						@Override
						public void onResponseReceived(Request request, Response response) {
							String flag = response.getText();
							//Window.alert("Responose:"+flag);
							if(flag!=null && !"".equals(flag))
								GwtConstants.DB_STATUS = Boolean.parseBoolean(flag);	
							else
								GwtConstants.DB_STATUS = false;
						}

						@Override
						public void onError(Request request, Throwable e) {
							GwtConstants.DB_STATUS = false;
						}
					});
				} catch (Exception e) {
					GwtConstants.DB_STATUS = false;
					e.printStackTrace();
				}	
			}
    	};
    	
    	refreshTimer.scheduleRepeating(REFRESH_INTERNAL);
    }


很简单的一段代码, 但奇怪的是只有第一次访问后台代码了,以后始终不再访问后台, 搜了大量参考之后得知貌似得传一个变量到后台, 所以改进一小段代码后问题就解决了.


RequestBuilder builder = new RequestBuilder(RequestBuilder.GET,  "chcekDBStatus.do?sessionid=(new Date().toString()));

太蛋疼的问题了, 具体原因现在还不知道...
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics