我清除完Temp History和cookies里面所有内容。只剩下Temporary Internet Files里的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里面所有内容。只剩下Temporary Internet Files里的4个hao123的4个JS文件和一个html文件,依然能断线访问。 想问下到底是什么代码实现了判断网络异常便使用缓存文件? 还是在别处还有缓存文件我没有清理呢? 同时问下JS或ajax或html代码里面有没有判断网络异常读取缓存文件的代码?
能确定实现出的功能在这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强制删除了。 不知道别的地方还有有没有缓存跟服务端的代码?
请理解下缓存到底是什么,并非是什么某种技术,这本身就是缓存机制。
可能你对我的回答很不满意,不过看了你的疑问我忽然想到,现在的WEB程序员们对此有多少了解呢。
除了HTML/JS/CSS外。了解HTTP吗,了解请求过程吗?
LZ所说“而在连网后首先加载完缓存文件在尝试连接远程服务器”,这是具体浏览器实现,和网站没多少关系吧
顺便,LZ用什么浏览器?
这点我可以做到修改服务器储蓄时间。
但是你绝对没能力做到hao123那样智能缓存。
请仔细阅读主题了解里面内容。
一般这些设置都是用meta标记的说。
你厉害你做个网站断线后能访问?不开启脱机访问的情况下。。
这点我可以做到修改服务器储蓄时间。
但是你绝对没能力做到hao123那样智能缓存。回楼主: 我确实做不出断网线后依然能访问的站点,如果可以,我把全世界站点都做成断网站点,我想电信和网通恐怕要倒闭了!
我想除了浏览器缓存原因,没有更好的解释原理了!
其次,我帮你推荐下,让更多的CSDNER来帮你解疑答惑
最后,本帖中所有争论均不删除(除人身攻击外),所以大家畅所欲言。
拿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
大体思路是这样:
设置首页各项资源(脚本、图片、样式)的Last-Modified, 你看看这个都被超后修改
Date Sun, 27 Mar 2011 07:51:55 GMT
Expires Mon, 28 Mar 2011 07:51:55 GMT
,打开IE或浏览器,呈现网站内容的资源时会优先判断Last-Modified,如果没过期
然后又无法去服务器端检验是否修改,就直接读取本地
如果不明白的话,搜索一下挺好,比较简单~
当时页面就停在hao123的,显示"Firefox 无法在 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存放)并呈现.
所有的过程对于前台来说是透明的.
有一个疑问:第一次访问hao123,缓存到本地后,关闭浏览器,禁用本地连接 - 第一次HTTP请求;
重新打开浏览器访问hao123一样可以访问 - 这里没有进行http请求。
测试浏览器:ie6 firfox4
断开网络,浏览器识别到网络异常,直接读取本地缓存。
http://www.vaadv.com/upload/22.jpg :关掉IE浏览器,并且禁用网络链接后再重新访问的情况
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代码里面有没有判断网络异常读取缓存文件的代码?
javascript可以写几个判断语句给我不?
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强制删除了。
不知道别的地方还有有没有缓存跟服务端的代码?
在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为什么能离线访问。
详细内容可以抓包看看每次请求网站返回的状态码。304什么的
如果是的话....我把里面的也完全清空了,还是能离线读取缓存来显示页面哎..
你的缓存没清除完吧?
你看看我上一个贴的两张图,第一张图是第一次访问hao123的时候的第二章图式我关闭IE浏览器(6.0),然后禁用了我的网络链接,重新访问hao123的我的IE设置了“关闭浏览器时自动清空internet临时文件夹”说明hao123不过是用了浏览器缓存罢了然后我接着试了自己写的几个网站(我没特别声明是否启用浏览器缓存)
结果发现,当我不清空internet临时文件夹(也就是没有关闭IE重新打开)的时候,即便我禁用了网络链接,依然可以访问自己的网站
其实这个说到底,不过是...
你自个儿的浏览器设置罢了(当然,你做网站的时候也可以声明是否禁用浏览器缓存)!
FF中使用SQLLite记录各种资源的过期时间,IE估计有自己另一套记录策略
并不是只有html文档可以指定过期时间,http响应头也是可以的
绝大多数的浏览器的缓存实现跟Cookies的过期时间都没有毛线关系
要是想实现一个Super智能的缓存,断网照样跑神马的,自己写个浏览器吧——别说实现断网访问,就是断电访问也是有可能的!
首先 浏览器访问web站点,下载文件到临时文件夹内(即建立缓存),然后当你再次访问该站点的时候,浏览器会根据该站点的html内的meta相关内容和服务端返回的状态码来判断是否需要更新页面相关资源,如果断网或者是服务器返回一个状态码(具体的代码意思你自己搜索:“HTTP状态码”)告诉浏览器自行处理,浏览器就直接使用临时文件(缓存)来渲染出页面来。这里说的是大概流程,具体的需要你自己去搜索,不要一上来就你给代码,你给位置,为啥什么都要别人来帮你做,都给你思路了,一大堆人都告诉你基本一样的答案,你还倔强的认为不是缓存么?