FALLHUNTER

Web & Mobile, Design & Code

小心浏览器的重定向缓存 redirect cache

2010-09-04 Tags:

这几天开发中遇到一个怪事,一个按钮(超链接)不知道怎么回事就不能用了,跟了代码,发现超链接中的参数没有传到server上来,百思不得其解,想尽了各种方法,都没解决。你说你感到万分沮丧,甚至开始怀疑server。

后来用抓包工具查看了浏览器发出的请求,发现发出请求时就没有了连接中的get参数,看来还是浏览器的问题,尝试不同浏览器,chrome和safari都不行,firefox居然没问题。为什么不尝试ie?我才不在乎ie行不行呢!

再仔细深入重现问题的操作序列,发现了其中有一个重定向!忽然想起了当年peter同学在技术交流上介绍301和302的区别,这真如一道黎明的曙光闪现!没错,w3c标准,301为永久重定向,应该被缓存。查看代码,Django的redict函数,默认发出的是301!这样,看似“见鬼”的问题解决了。其实是因为重定向到了不带参数的url,使得问题看起来好像是参数丢失了,让我们误入歧途。

总结,重定向分为301永久重定向和302临时重定向,对于301来说,浏览器可以缓存重定向的结果,当下次请求未定向的连接时,改为直接请求重定向后的结果。这也是为什么在浏览器状态栏眼睁睁的看着一个连接,点进去却是另外一个。那我们的问题在firefox中没有发生?从这点上,看来firefox还不够“标准”哈。

Tags:

3 Responses to “小心浏览器的重定向缓存 redirect cache”


  1. zhaomeng
    on Sep 9th, 2010
    @ 10:47

    据我之前观察(大概一年前), firefox也是缓存永久重定向结果的, 不过强刷的话会更新。


  2. fallhunter
    on Sep 9th, 2010
    @ 13:03

    哈哈 要是你还坐我旁边,这个问题就不会发生啦


  3. ltc
    on Nov 17th, 2011
    @ 13:35

    我才不在乎ie行不行呢!

    我现在就为此而苦恼,因为我的网站在国内访问,90%用的都是ie,或ie核。

Leave a Reply

使用新浪微博登录

© 2009 FALLHUNTER. All Rights Reserved.

This blog is powered by Wordpress and Magatheme by Bryan Helmig.

无觅相关文章插件,快速提升流量