问题描述:
浏览器打开一个页面时,有时候会初始化页面数据,一切正常。而有时候则不会初始化页面数据,点击查询也没有效果。通过网络抓包以及后台代码的分析发现是浏览器缓存了html页面信息导致的结果。具体操作如下,已备忘。
首先看下页面请求的逻辑:
左边是请求HTML的步骤,右边是页面初始化信息的请求。其中就是页面初始化时不会走初始化登录账号信息的过滤器。
第一次请求html页面信息时,会初始化账号信息,然后页面初始化ajax请求,会通过验证登录账号的过滤器,然后获取初始化数据。但是如果这个时候关掉浏览器再打开点击请求html页面菜单,这个时候不会发送http请求,而是直接用的浏览器的缓存页面,导致登录账号信息未初始化,接着页面数据初始化的ajax请求就会被登录账号信息的验证过滤器拦截,导致拿取不到页面初始化数据而查询为空。
解决办法有两种:
1.在请求html页面的url后面加上一个时间戳,防止浏览器缓存
function timestamp(url){ var getTimestamp=new Date().getTime(); url=url+"?timestamp="+getTimestamp return url; } |
2.不直接请求html页面,改用一个请求路径,通过后台服务器的controller层来返回一个html页面
@RequestMapping(value = "/getAaaPage", method = RequestMethod.GET) public ModelAndView getCcsAndCssMsgPage() { ModelAndView view = new ModelAndView( "query-aaa-msg" ); return view; } |