缓存首先是由报头控制的,如果没报头,则由<META HTTP-EQUIV="Expires" CONTENT=">
指定
首先你请求页面时,服务器会给出缓存控制信息,如果本地的缓存没有过期,则直接读本地缓存,如果过期了,则返回一个新页缓存在本地会有缓存文件,和你另行保存没有关系,缓存可以脱机浏览所以说,有没有缓存,和服务器密切相关具体可以看http1.1协议缓存部分

解决方案 »

  1.   


    这个意思是这样的,如果你请求一个网页,服务器会判断你的客户端的缓存是否过期,如果过期,则重新给你一个页,如果不过期,则直接调用本地缓存如果网络连不上,则ie会查找本地是否有缓存,如果有,则给出缓存页,如果没有,则出错服务器端可以设置客户端的缓存情况,其中header的优先级要高于<META HTTP-EQUIV="Expires" CONTENT=">指定 
    上面是我的理解,不一定正确
      

  2.   

    在ie浏览器中META使用正常,但在firefox中使用不正常,不能够缓存!看看在firefox中是否允许脱机连接,没有的话设置一下相关项
      

  3.   

    我想不通的是,hao123在几乎是在任何一款浏览器中都可以实现脱机使用不知道好123的代码有什么特别的
      

  4.   

    谢谢你回复!
    我看一下header能不能实现
      

  5.   

    实现缓存,服务器头信息应该有Last-Modified
      

  6.   

    我在网上也查到你说的Last-Modified 
     在浏览器第一次请求某一个URL时,服务器端的返回状态会是200,内容是你请求的资源,同时有一个Last-Modified的属性标记此文件在服务期端最后被修改的时间,格式类似这样:
            Last-Modified: Fri, 12 May 2006 18:53:33 GMT
            客户端第二次请求此URL时,根据 HTTP 协议的规定,浏览器会向服务器传送 If-Modified-Since 报头,询问该时间之后文件是否有被修改过:
            If-Modified-Since: Fri, 12 May 2006 18:53:33 GMT
            如果服务器端的资源没有变化,则自动返回 HTTP 304 (Not Changed.)状态码,内容为空,这样就节省了传输数据量。当服务器端代码发生改变或者重启服务器时,则重新发出资源,返回和第一次请求时类似。从而保证不向客户端重复发出资源,也保证当服务器有变化时,客户端能够得到最新的资源。但不知道你说的服务器头信息代码该怎么写? 难道是直接把上述代码放进php去!!
      

  7.   

    http://hi.baidu.com/kzsoft/blog/item/073bf62b7ee001ffe7cd4074.html以下代码可以让网页象hao123一样被缓存:<meta http-equiv="cache-control" content="max-age=99999" forua="true" />
    <meta http-equiv="pragma" content="private">   
    <meta http-equiv="cache-control" content="private">看看上面两个试试
      

  8.   

    我试了用header函数<?php  
     header("Expires:Mon, 27 Oct 2009 21:31:29 GMT"); ?>
    对于其他firefox等浏览器没有用!!
      

  9.   

    Date: Tue, 28 Oct 2008 02:14:04 GMT
    Server: Apache/2.2.4 (Unix) PHP/5.1.4
    Last-Modified: Mon, 27 Oct 2008 03:41:00 GMT
    Etag: "c538"
    Accept-Ranges: bytes
    Cache-Control: max-age=259200
    Expires: Fri, 31 Oct 2008 02:14:04 GMT
    Vary: Accept-Encoding
    Content-Encoding: gzip
    Content-Length: 14590
    Content-Type: text/html200 OK
    这是好123的header 
    参考一下,header输出Last-Modified: Mon, 27 Oct 2008 03:41:00 GMT
    Cache-Control: max-age=259200
    Expires: Fri, 31 Oct 2008 02:14:04 GMT
      

  10.   


    在ie浏览器里好多中方法都可以实现客户端缓存,可在firefox等浏览器中却不可以,查看hao123的页面原代码,里面好像并没有提到http协议的缓存代码,那hao123是怎么实现在几乎所有浏览器中都可以实现缓存功能!!!!
      

  11.   

    Cache-Control: max-age=259200 
    Expires: Fri, 31 Oct 2009 02:14:04 GMT用这两个应该就可以了
      

  12.   

    晕header("Cache-Control: max-age=259200"); 
    header("Expires: Fri, 31 Oct 2009 02:14:04 GM");
      

  13.   

    朋友们!谢谢你们的回复!!!坚决支持csdn
     
    刚刚测试了,在php文件的最顶端加入如下代码可实现在firefox浏览器中的客户端缓存!!<?php  
    $time = mktime(date("H")+8,date("i"),date("s"),date("m"),date("d"),date("Y"));
    header('Cache-Control: max-age=259200');
    header("Expires: Fri, 31 Oct 2009 02:14:04 GMT"); 
    header('Last-Modified: '.gmdate('D, d M Y 01:01:01',$time).' GMT');
    ?>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
    <title>无标题文档</title>
    </head><body>
    aaaaaaaaaaaaaaaaaaaaaaaaaaa
    </body></html>
      

  14.   

    非常抱歉还得请教了!使用header函数可以在firefox中实现.php类型文件的缓存,但静态页面.htm却不可以在firefox中实现客户端缓存!!我原本的想法是用php代码生成缓存信息再保存成静态页面(2.htm),但保存之后的静态页面不可以在firefox中实现客户端缓存!!我的代码如下:<?php  
    ob_start();
    $time = mktime(date("H")+8,date("i"),date("s"),date("m"),date("d"),date("Y"));
    header('Cache-Control: max-age=259200');
    header("Expires: Fri, 31 Oct 2009 02:14:04 GMT"); 
    header('Last-Modified: '.gmdate('D, d M Y 01:01:01',$time).' GMT');
    ?>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
    <title>无标题文档</title>
    </head><body>
    <?php echo "ddddee";?>
    aaaaaaaaaaaaaaaaaaaaaaaaaaa
    </body>
    </html><?php
    $str = ob_get_contents();
    ob_end_clean();if(file_exists("2.htm")){
        file_put_contents("2.htm",$str);
    }else{
        echo "该文件不存在!";
    }
    echo "<script>window.location.href='2.htm'</script>";
    ?>
      

  15.   


    用header函数也可以做到,
    但是,apache默认下,304除外,是应该返回Last-Modified,浏览器,通常也主要看这里。
      

  16.   

    apache下,CacheDefaultExpire用来指定默认更新时间
      

  17.   

    我试过了,可以用header函数做到在firefox中缓存页面,但是如果我想在firefox中缓存静态页面呢!!!
    代码该怎样写呢??我有点困惑!!!
      

  18.   


    我用的是虚拟服务器!!
    不过对apache使用不太熟悉!!抱歉!!
      

  19.   


    我在网上找了一下资料可能是别人感觉太简单都没有怎么说去设置apache,
    只是说“静态页面不用去管它了,如果想更好的控制静态页面的缓存,apache有几个模块可以很好的控制,这里不讨论”能请教一下“apache有几个模块可以很好的控制”????
    谢谢!!!
      

  20.   


    http://httpd.apache.org/docs/2.2/en/mod/mod_cache.html
      

  21.   

    这个头可以是apache指定,也可以是header输出的 apache指定,可以google下"apache如何设置缓存"
      

  22.   


    我在网上查了!!查到!在文件httpd.conf的最后加上并重新启动服务器!本地上测试还是只能够在ie浏览器中实现客户端缓存,但firefox浏览器中仍不能缓存!!
    <IfModule mod_cache.c>
      CacheForceCompletion 100
      CacheDefaultExpire 3600
      CacheMaxExpire 86400
      CacheLastModifiedFactor 0.1
    </IfModule> 我在网页中代码:<html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
    <META HTTP-EQUIV="Expires" CONTENT="Mon, 04 Dec 2009 21:29:02 GMT">
    <meta http-equiv="cache-control" content="max-age=99999">
    <meta http-equiv="pragma" content="private">
    <title>55zhan</title>
    </head>
    <body>
    爱上对方撒旦送达阿斯顿撒旦法撒旦法是
    <br><br><br>
    <a href="http://www.hao123.com">hao123</a>
    </body>
    </html>