本帖最后由 cbsy123 于 2011-03-26 17:07:19 编辑

解决方案 »

  1.   


    请理解下缓存到底是什么,并非是什么某种技术,这本身就是缓存机制。
    可能你对我的回答很不满意,不过看了你的疑问我忽然想到,现在的WEB程序员们对此有多少了解呢。
    除了HTML/JS/CSS外。了解HTTP吗,了解请求过程吗?
      

  2.   

       PHP里有应对大并发的好工具memecache.exe,在同速度,同服务器IDE环境的情况下,用MEMCACHE,访问速度能大大提升,后台方面,决非只是简单的HTML静态!其他后台我相信应该也能做到这点!    但是楼主提到的是HAO123这种基本可以说是纯静态的HTML站点,提高HTML访问速度,我想速度上快的原因是其服务器性能好,现在新的服务器,加电信独立IP组建一个纯HTML站点的访问速度也是很牛X2011的!至于断网后能访问,我想这个只能是浏览器内部机制问题,如果站点代码并不经常更新,那自然把CACHE设置长一些,如果经常频率非常高的页面,比如新浪里的某些实时图表,那就不适合再用缓存了,我的理解是这样的,如有不对,欢迎指正!
      

  3.   

        呵呵,是啊。现在的大部分WEB人员,不管是美工/前台程序,还是后台程序,都很少去了解站点运行的实质是什么,顶多就是听说这个东西,大概理解些理论,毕竟像HTTP这种东西,在实践应用上不像代码能方便测试,它是一种看不见摸不着,不方便测试,不能随意去调试的东西!这些底层的东西,也许只有曾经大量写过CGI程序的曾经研究过,多少知道些,甚至也未必很清楚!了解有深度区别,谁都不敢保证自己很了解!就像C语言会用的人,但是研究C语言底层核心的人却不多!研究电路分析的很多,研究集成电路内部结构的人不多,99%都只是停留在说说道理的层面,没几个人可以说自己已经有能力研究像像ISO7层协议这些底层的东西!真是学海无边啊。永无止镜的东西!以上是举例无特指哪个领域,哪个领域都底,哪个领域都可以说互相关联!
      

  4.   

    虽然我不怎么相信有这等技术,不过还是禁用了网卡然后刷新hao123,但结果明显不是LZ所描述的那样
    LZ所说“而在连网后首先加载完缓存文件在尝试连接远程服务器”,这是具体浏览器实现,和网站没多少关系吧
    顺便,LZ用什么浏览器?
      

  5.   

    大哥你首先要打开hao123在断网吧,没打开过怎么可能访问?
      

  6.   

    你厉害你做个网站断线后能访问?不开启脱机访问的情况下。。
    这点我可以做到修改服务器储蓄时间。
    但是你绝对没能力做到hao123那样智能缓存。
      

  7.   

    哦,缓存机制。那你给我做做看hao123的那种效果,我就服你,或者拿个网站样板开看看。
    请仔细阅读主题了解里面内容。
      

  8.   

    或者按我说的去操作尝试下hao123,2345,265,这3个网站的效果
      

  9.   

    后台用啥语言都不是问题,之事生成了静态链接的话,就OK了楼主说的,断线还能继续访问的问题,一般来讲都是缓存的事情吧。实现缓存访问这方面,主要是页面设计上的一些东西造成的。如果你有空,搜索下相关的信息就可以了。当然服务端脚本也有进行相应设置的函数,你结合自己相关的语言找找就可以了。
    一般这些设置都是用meta标记的说。
      

  10.   


    你厉害你做个网站断线后能访问?不开启脱机访问的情况下。。
    这点我可以做到修改服务器储蓄时间。
    但是你绝对没能力做到hao123那样智能缓存。
    回楼主:   我确实做不出断网线后依然能访问的站点,如果可以,我把全世界站点都做成断网站点,我想电信和网通恐怕要倒闭了!
      
       我想除了浏览器缓存原因,没有更好的解释原理了!
      

  11.   

    这是浏览器开发者所想的问题,他们把这些都做好了。网页及时更新,推荐看看Ajax
      

  12.   

    首先,向楼主道歉,不该对你指指点点
    其次,我帮你推荐下,让更多的CSDNER来帮你解疑答惑
    最后,本帖中所有争论均不删除(除人身攻击外),所以大家畅所欲言。
      

  13.   

    我以前在没开通宽带的时候可以访问QQ.com,虽然只有不到1分钟的时间里,我不知道他是怎么稀里糊涂就连上网了,可能很多人不相信,但这是真的。就连接上了交换机,其他什么也没,而且连上网的时间不到1分钟。
      

  14.   

    在遥远的年代有一种叫"离线浏览",甚至还专门为这种模式叫"离线浏览器".当时动态技术远没有现在普及,很多WebSite都是静态页面所以很适合离线浏览.IE浏览器还为这种模式设置了选项:"Internet选项->浏览历史记录->设置->临时文件".LZ提到的这些网址导航都定位中小城市或农村居民上网浏览(即基本不会打字用搜索engine).
    拿hao123.com为例,使用Get获取其服务器返回信息可以看到:
    HTTP/1.1 304 Not Modified
    Cache:
        Cache-Control: max-age=259200
        Date: Mon, 28 Mar 2011 02:42:21 GMT
        Expires: Thu, 31 Mar 2011 02:42:21 GMT
    Entity:
        Content-Type: text/html
        ETag: "20947927"
        Last-Modified: Fri, 25 Mar 2011 03:55:21 GMT
        Server: lighttpd
      

  15.   

    匆匆忙忙看了下。hao123导航站。
    大体思路是这样:
    设置首页各项资源(脚本、图片、样式)的Last-Modified, 你看看这个都被超后修改
    Date Sun, 27 Mar 2011 07:51:55 GMT
    Expires Mon, 28 Mar 2011 07:51:55 GMT
    ,打开IE或浏览器,呈现网站内容的资源时会优先判断Last-Modified,如果没过期
    然后又无法去服务器端检验是否修改,就直接读取本地
      

  16.   

    document.cookie属性
    如果不明白的话,搜索一下挺好,比较简单~
      

  17.   


    当时页面就停在hao123的,显示"Firefox  无法在 www.hao123.com 找到该服务器",怎么解释
      

  18.   

    其实就是第一次访问会把大部分文件保存到本地来,正如楼上所言像hao123、265等这些网站其页面更新数据实在是少得可怜,基本无需每次访问都去连接服务器去更新,他其实就是把大部分框架内容已经保存到本地了
      

  19.   

    看来还有很多人不知道其背后的原理.LZ说说的现象是属于Client缓存也就是浏览器缓存.这一块缓存是浏览器自己负责维护,包括写入和读取.当浏览器请求页面:Host:www.hao123.com/
    GET / HTTP/1.1
    hao123服务器返回:
    HTTP/1.1 200 OK
    Content-Type: text/html
    ETag: "20947927"
    Accept-Ranges: bytes
    Last-Modified: Fri, 25 Mar 2011 03:55:21 GMT  //该页面最后修改日期 3/25
    Expires: Thu, 31 Mar 2011 03:39:53 GMT        //过期时间是3/21
    Cache-Control: max-age=259200                 //http1.1标准,缓存为259200 / 60 / 60 / 24 =3天
    Vary: Accept-Encoding
    Content-Encoding: gzip
    Content-Length: 15485
    Date: Mon, 28 Mar 2011 03:39:53 GMT           //当前时间
    Server: lighttpd如果再次访问hao123.com
    GET http://www.hao123.com/ HTTP/1.1
    Host: www.hao123.com
    Connection: keep-alive
    Cache-Control: max-age=0
    User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.204 Safari/534.16
    Accept: application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
    Accept-Encoding: gzip,deflate,sdch
    Accept-Language: zh-CN,zh;q=0.8
    Accept-Charset: GBK,utf-8;q=0.7,*;q=0.3
    Cookie: BAIDUID=78B2EDADEE1743B22D13BBB2146D66BC:FG=1; loc=1%7C%BD%AD%CB%D5%7C%CB%D5%D6%DD
    If-None-Match: "20947927"
    If-Modified-Since: Fri, 25 Mar 2011 03:55:21 GMT //注意:告诉hao123本地缓存的最后修改时间是3/25
    这次服务器返回:
    HTTP/1.1 304 Not Modified
    Content-Type: text/html
    ETag: "20947927"
    Accept-Ranges: bytes
    Last-Modified: Fri, 25 Mar 2011 03:55:21 GMT
    Expires: Thu, 31 Mar 2011 03:42:28 GMT
    Cache-Control: max-age=259200
    Date: Mon, 28 Mar 2011 03:42:28 GMT
    Server: lighttpd
    注意返回时 304,告诉浏览器该页面没有更新,你自己看着办吧.
    这是IE会从临时目录中读取该hao123页面的缓存(url hash存放)并呈现.
    所有的过程对于前台来说是透明的.
      

  20.   

    照LZ这种态度讨论问题。估计你找不到正确答案了!请直接呼叫hao123技术人员。这不是武林大会,张开就是 你怎么怎么样我就服你,你厉害你怎么怎么样~~
      

  21.   

    兄弟啊..咱不丢这个人行么?!就这样说了吧..ajax听说过么?!看看微软给出的关于他的浏览器IE的相关技术文档吧..不知道没有关系..可以虚心请教..但是不知道别装大爷..看了你的帖子..本来不想回帖的..不过还是忍不住..就此打住了..
      

  22.   


    有一个疑问:第一次访问hao123,缓存到本地后,关闭浏览器,禁用本地连接 - 第一次HTTP请求;
    重新打开浏览器访问hao123一样可以访问 - 这里没有进行http请求。
    测试浏览器:ie6 firfox4
      

  23.   

    这个真和AJAX没关系 另外,请不要进行人身攻击。
      

  24.   

    http://www.gzsums.edu.cn/webclass/html/page.html#lang楼主可以试试这个网站里的类似网页是不是也有“高深的网站静态技术”。
      

  25.   

    首次访问hao123,浏览器会根据HTTP 头相关指令缓存网页,并告诉浏览器一些特殊标记;
    断开网络,浏览器识别到网络异常,直接读取本地缓存。
      

  26.   

    LZ可以看下这两张截图http://www.vaadv.com/upload/11.jpg :第一次访问hao123
    http://www.vaadv.com/upload/22.jpg :关掉IE浏览器,并且禁用网络链接后再重新访问的情况
      

  27.   

    我清除完Temp History和cookies里面所有内容。只剩下Temporary Internet Files里的4个JS文件和一个html文件,依然能断线访问。想问下到底是什么代码实现了判断网络异常依然能访问?还是在别处还有缓存文件呢?
      

  28.   

    我清除完
    C:\Documents and Settings\Admin\Local Settings\Temp\cookies
    C:\Documents and Settings\Admin\Local Settings\Temp\History
    C:\Documents and Settings\Admin\Local Settings\Temp\Temp里面所有内容。只剩下Temporary Internet Files里的4个hao123的4个JS文件和一个html文件,依然能断线访问。
    想问下到底是什么代码实现了判断网络异常便使用缓存文件?
    还是在别处还有缓存文件我没有清理呢?
    同时问下JS或ajax或html代码里面有没有判断网络异常读取缓存文件的代码?
      

  29.   

    javascript 的后端实现 C语言实现
      

  30.   

    以上测试环境IE6,且在不开启脱机工作的情况下,FF不能离线访问。
    javascript可以写几个判断语句给我不?
      

  31.   

    这个我原来在一个计算机培训网上看过,他有一段加密的代码就是进行判断的,但是我没细研究,不过你可以查下baidu看看用js判断是否连上网了,其实最简单的呢用ajax或者什么的进行隔段时间判断,如果ajax返回了那么说明连上网了,如果N秒后依然没反应那么接着等
      

  32.   

    你可分析4个hao123的4个JS文件和一个html文件的...
      

  33.   

    这个判断是否网络异常是浏览器自己做的,不需要使用什么javascript好不好啊37楼不是说的很明白了么
      

  34.   

    当你打开这个页面的时候就在执行一个方法,这个方法setTimeout当连上网了就重新访问该网站就能实现
      

  35.   

    浏览器会去判断请求流的! 如果网络异常的话,直接就不发送请求了!   Temporary Internet Files是历史缓存文件,不发送请求了就自己去临时文件下面去取,你如果把这些都删了的话肯定就不能访问了!  这个其实没什么想不通的!  不要去钻牛角尖,而且还是不合理的!  你也可以自己写个网站,测试下,不要动态的,就是静态的,在meta里面把express等都设置好就OK了!  另外,firefox和IE里面的原理不一样!  他们的缓存机制也不一样!  不信的话可以自己去网上搜!
      

  36.   

    能确定实现出的功能在这4个JS或HTML文件里面吗?
    C:\Documents and Settings\Admin\Local Settings\Temp\cookies
    C:\Documents and Settings\Admin\Local Settings\Temp\History
    C:\Documents and Settings\Admin\Local Settings\Temp\Temp
    这3个我完全清空了,连隐藏文件和系统保护文件都被我用360强制删除了。
    不知道别的地方还有有没有缓存跟服务端的代码?
      

  37.   

    为什么99%的网站在断线的情况下无法打开缓存里面的网站呢?
    在meta里面把express等都设置好就OK了
    如何设置我看hao123没看出特别呢....
    如下:
    <html><!--STATUS OK-->
    <head>
    <base target="_blank">
    <meta http-equiv="X-UA-Compatible" content="IE=7">
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
    <meta name="ROBOTS" content="NOODP">
    <meta name="description" content="hao123
    另外,firefox和IE里面的原理不一样!
    firefox只占及少市场份额,其他使用IE和IE内核的浏览器却占90%以上
    所以我想弄明白hao123为什么能离线访问。
      

  38.   

    设置缓存还可以在iis那头设置的
    详细内容可以抓包看看每次请求网站返回的状态码。304什么的
      

  39.   

    cookie文件夹里面吗?
    如果是的话....我把里面的也完全清空了,还是能离线读取缓存来显示页面哎..
      

  40.   

    在cookie以外的文件夹有存放吗?
      

  41.   


    你的缓存没清除完吧?
    你看看我上一个贴的两张图,第一张图是第一次访问hao123的时候的第二章图式我关闭IE浏览器(6.0),然后禁用了我的网络链接,重新访问hao123的我的IE设置了“关闭浏览器时自动清空internet临时文件夹”说明hao123不过是用了浏览器缓存罢了然后我接着试了自己写的几个网站(我没特别声明是否启用浏览器缓存)
    结果发现,当我不清空internet临时文件夹(也就是没有关闭IE重新打开)的时候,即便我禁用了网络链接,依然可以访问自己的网站
    其实这个说到底,不过是...
    你自个儿的浏览器设置罢了(当然,你做网站的时候也可以声明是否禁用浏览器缓存)!
      

  42.   

    还有就是浏览器自身的缓存了,你可以在浏览器设置中将所有缓存cookie数据删除
      

  43.   

    A little knowledge is a dangerous thing, so is a lot.
      

  44.   


    FF中使用SQLLite记录各种资源的过期时间,IE估计有自己另一套记录策略
    并不是只有html文档可以指定过期时间,http响应头也是可以的
    绝大多数的浏览器的缓存实现跟Cookies的过期时间都没有毛线关系
    要是想实现一个Super智能的缓存,断网照样跑神马的,自己写个浏览器吧——别说实现断网访问,就是断电访问也是有可能的!
      

  45.   

    这种事,说白了就是利用浏览器的缓存机制,即使有其它的东西,也是以这个为基础的so >> google >> "浏览器缓存" 
      

  46.   

    你能不能好好看看37楼说的啊
    首先 浏览器访问web站点,下载文件到临时文件夹内(即建立缓存),然后当你再次访问该站点的时候,浏览器会根据该站点的html内的meta相关内容和服务端返回的状态码来判断是否需要更新页面相关资源,如果断网或者是服务器返回一个状态码(具体的代码意思你自己搜索:“HTTP状态码”)告诉浏览器自行处理,浏览器就直接使用临时文件(缓存)来渲染出页面来。这里说的是大概流程,具体的需要你自己去搜索,不要一上来就你给代码,你给位置,为啥什么都要别人来帮你做,都给你思路了,一大堆人都告诉你基本一样的答案,你还倔强的认为不是缓存么?
      

  47.   

    修改HOST文件可以实现,我以前试过