避免代理服务器的缓存带来的问题
最近客户反映用户登录系统的时候,用户资料会变成另外一个人的,经过排查,发现:用户的网络架构采用一个代理服务器,所有用户上网均通过该代理服务器访问,缓存问题造成了该问题,申请的url相同,代理就不会再去访问服务器,直接把缓存中的数据给返回到客户端,去网上搜了好多帖子,最后结合自己项目的实际情况,采用以下方案解决了该问题,在此记录下来和大家分享。
新加一个过滤器,在过滤器的doFilter方法中加入以下代码:
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { HttpServletRequest req = (HttpServletRequest)request; // System.out.println(req.getRequestURI()); req.setAttribute("date", new Date()); req.setAttribute("random", Math.random()); chain.doFilter(request, response); }
加入日期和随机数,
过滤器的url-pattern将需要过滤的url给配置上,界面上将特定的url后面加上这两个参数,用ognl表达式获取值
<script> var navBarInfo = new Array(); <c:forEach items="${navList}" var="nav"> <c:if test="${nav.fdType==1}"> navBarInfo[navBarInfo.length] = "<c:out value="${nav.fdName}"/>|<c:url value="/sys/home/sys_home_nav/sysHomeNav.do?method=view&fdId=${nav.fdId}"/> |<c:out value="${nav.fdPicName}"/>"; </c:if> <c:if test="${nav.fdType==2}"> navBarInfo[navBarInfo.length] = "<c:out value="${nav.fdName}"/>|<c:url value="${nav.fdUrl}?i=${random}&date=${date}"/>|<c:out value="${nav.fdPicName}"/>"; </c:if> </c:forEach> </script>
通过此url访问的数据全部恢复正常了。
相关推荐
lyonte 2008-04-19
paanpan 2016-08-22
87324554 2012-09-04
LutosX 2016-06-28
ftafta 2011-04-28
yanghan 2013-10-12
chengdafeng 2011-03-05
88251048 2013-06-10
mintazoedeng 2014-08-03
thone00 2012-08-29
GimmeS 2012-04-26
bestlove 2013-04-17
WflytoC 2011-05-17
王道立心 2019-07-01
晴天哥 2014-07-23
代工匠码 2012-12-17
aluminiumfoil 2011-08-30