header("Expires: 0");
header("Cache-Control: private, post-check=0, pre-check=0, max-age=0");  //post-check=0,pre-check=0,ie5.0才有的防缓存声明      
header("Pragma: no-cache");    //和Cache-Control: no-cache相同,兼容http1.0现在的问题是,这三行代码是不是有bug,第三行明明设置了header("Pragma: no-cache"),可第二行却设置了header("Cache-Control: private,这样写有什么意义??这是不是程序的bug??

解决方案 »

  1.   


    我的意思是这样的:
    第二行明明设置了Cache-Control: private,可为什么第三行却设置header("Pragma: no-cache"),这样两者不是有冲突吗??
      

  2.   

    Cache-Control: private 是浏览器默认行为,无论你设与不设,本来就是 private 的发送多条含义相同的 http 头的目的是让浏览器总是能理解你的目的——不缓存
    因为浏览器个体只认可他能识别的指令
      

  3.   


    我的意思是这样的:
    第二行明明设置了Cache-Control: private,可为什么第三行却设置header("Pragma: no-cache"),这样两者不是有冲突吗??谁告诉你这两个是冲突的?先去看看相关知识。不要想当然。
      

  4.   

    这个是多浏览器兼容写法,以保证在多种浏览器下面都能够不缓存,就像你的CSS有多种浏览器兼容写法一样,并不冲突。
      

  5.   


    header("Expires: 0");//那为什么不这样写?这样写目的不是更能达到吗?
    header("Cache-Control: no-cache, post-check=0, pre-check=0, max-age=0");  header("Pragma: no-cache");    //和Cache-Control: no-cache相同,兼容http1.0
      

  6.   


    我的意思是这样的:
    第二行明明设置了Cache-Control: private,可为什么第三行却设置header("Pragma: no-cache"),这样两者不是有冲突吗??谁告诉你这两个是冲突的?先去看看相关知识。不要想当然。eader("Expires: 0");//那为什么不这样写?这样写目的不是更能达到吗?
    header("Cache-Control: no-cache, post-check=0, pre-check=0, max-age=0");  header("Pragma: no-cache");    //和Cache-Control: no-cache相同,兼容http1.0 
      

  7.   


    eader("Expires: 0");//那为什么不这样写?这样写目的不是更能达到吗?
    header("Cache-Control: no-cache, post-check=0, pre-check=0, max-age=0");  header("Pragma: no-cache");    //和Cache-Control: no-cache相同,兼容http1.0 
      

  8.   

    可以呀,我的项目中都是这样写的 header ("Expires: Mon, 26 Jul 1997 05:00:00 GMT");    // Date in the past
    header ("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
    header ("Cache-Control: no-cache, must-revalidate");  // HTTP/1.1
    header ("Pragma: no-cache");                          // HTTP/1.0
      

  9.   

       网页缓存由 HTTP消息头中的“Cache-control”控制,常见取值有private、no-cache、max-age、must- revalidate等,默认为private。
    其作用根据不同的重新浏览方式,分为以下几种情况:
    (1)、打开新窗口
    值为private、no-cache、must-revalidate,那么打开新窗口访问时都会重新访问服务器。
    而如果指定了max-age值,那么在此值内的时间里就不会重新访问服务器,例如:
    Cache-control: max-age=5(表示当访问此网页后的5秒内再次访问不会去服务器)
    (2)、在地址栏回车
    值为private或must-revalidate则只有第一次访问时会访问服务器,以后就不再访问。
    值为no-cache,那么每次都会访问。
    值为max-age,则在过期之前不会重复访问。
    (3)、按后退按扭
    值为private、must-revalidate、max-age,则不会重访问,
    值为no-cache,则每次都重复访问
    (4)、按刷新按扭
    无论为何值,都会重复访问
    Cache-control值为“no-cache”时,访问此页面不会在Internet临时文章夹留下页面备份。