首页 新闻 会员 周边 捐助

代理服务器缓存 导致网站串号

0
悬赏园豆:30 [已解决问题] 解决于 2012-11-26 10:34

     问题描述:

       如果使用了代理    A用户登录到网站,显示的是B用户  很崩溃

目前定位到是代理服务器缓存 问题   在不能动代理服务器的前提下,各位有碰到的是这么解决的

跪求各位大神指点!!!

问题补充:

还有人知道吗?

知识铺的主页 知识铺 | 初学一级 | 园豆:168
提问于:2012-11-16 11:01
< >
分享
最佳答案
0

你是不是用了伪静态页面,如果页面参数不一样了,那么就不存在缓存页被返回的问题了,另外也可以通过AJAX局部刷新动态信息。

收获园豆:25
秦楼东 | 小虾三级 |园豆:913 | 2012-11-16 11:08

  没用伪静态页面,也用了过滤器 

1. 这种方法也用了

response.setHeader( "Pragma ", "no-cache "); 
response.setHeader( "Cache-Control ", "no-cache "); 
response.setDateHeader( "Expires ",0); 

2. 也用了 

request.setAttribute("date",new Date());

 

还是没任何用处

知识铺 | 园豆:168 (初学一级) | 2012-11-16 11:18

@李凡: 

再尝试给URL后面添加一个时间戳的后缀,每次请求都附带当前时间戳,由于那个永远不会相同,那么在代理服务器看来,URL也不会相同,之前缓存的页面就没有对应的上的了。

秦楼东 | 园豆:913 (小虾三级) | 2012-11-16 11:23

@青龙白虎: 

req.setAttribute("date"new Date());    

req.setAttribute("random", Math.random());    

 

是这样处理 了   就是没什么用处

知识铺 | 园豆:168 (初学一级) | 2012-11-16 11:28

@李凡: 

  1. <script>    
  2. var navBarInfo = new Array();    
  3. <c:forEach items="${navList}" var="nav">    
  4.     <c:if test="${nav.fdType==1}">    
  5.         navBarInfo[navBarInfo.length] = "<c:out value="${nav.fdName}"/>|<c:url value="/sys/home/sys_home_nav/sysHomeNav.do?method=view&fdId=${nav.fdId}"/>    
  6.         |<c:out value="${nav.fdPicName}"/>";    
  7.              
  8.     </c:if>    
  9.     <c:if test="${nav.fdType==2}">    
  10.         navBarInfo[navBarInfo.length] = "<c:out value="${nav.fdName}"/>|<c:url value="${nav.fdUrl}?i=${random}&date=${date}"/>|<c:out value="${nav.fdPicName}"/>";    
  11.     </c:if>    
  12. </c:forEach>    
  13.     
  14. </script>   
    再看看这里
若雪封尘 | 园豆:663 (小虾三级) | 2012-11-16 11:29

@青龙白虎: 配置的是action跳转,过滤器好想不能改变参数。。。

知识铺 | 园豆:168 (初学一级) | 2012-11-16 11:29

@李凡: 

我的意思是客户端访问的时候,能不能在访问地址的末尾添加时间戳,你给的是服务端响应的时候处理,但是如果代理服务器要返回缓存页的话,客户端的请求都不会传递到服务端,直接被中途替换了缓存页返回给客户了。

秦楼东 | 园豆:913 (小虾三级) | 2012-11-16 11:56

@青龙白虎: 你的意思每个页面都这样添加。。。我的老天  这加到什么时候

知识铺 | 园豆:168 (初学一级) | 2012-11-16 12:10
其他回答(2)
0

加个随机的参数。

收获园豆:5
undefined | 园豆:898 (小虾三级) | 2012-11-16 11:23
0
  1. public void doFilter(ServletRequest request, ServletResponse response,    
  2.             FilterChain chain) throws IOException, ServletException {    
  3.         HttpServletRequest req = (HttpServletRequest)request;    
  4.     //  System.out.println(req.getRequestURI());    
  5.         req.setAttribute("date"new Date());    
  6.         req.setAttribute("random", Math.random());    
  7.         chain.doFilter(request, response);    
  8.     }   
若雪封尘 | 园豆:663 (小虾三级) | 2012-11-16 11:24

req.setAttribute("date"new Date());    

req.setAttribute("random", Math.random());    

 

是这样处理 了   就是没什么用处

支持(0) 反对(0) 知识铺 | 园豆:168 (初学一级) | 2012-11-16 11:27
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册