读书人

再次求教hao123、265、2345断网能访问

发布时间: 2012-02-06 15:52:44 作者: rapoo

再次求教hao123、265、2345断网能访问的问题! 小白勿入。非常高深强悍的静态网站技术。。。
如题;不懂的小白不要乱发言,不要跟我说每个站都有这种技术,不要跟我说是IE特有技术,也不要说打开脱机功能。,也不要跟我说设为主页也有这种功能,也不要跟我说设置网站的属性对话框-->HTTP头-->选择启用内容过期,这种答复,因为这样也只能在设定的时间内完全脱机访问。但是hao123不一样,他不但在断网后能访问原来的页面,而且在任何网络情况下,首先加载完缓存文件,这一步是在网络处于任何情况下,然后在连接服务器,即断线的情况下加载出绝大部分网站内容,当网络接通的时候,如果页面没有修改,则看到的仍然是原来的页面内容,而当页面有了修改的时候,他会马上返回修改后的页面,不用等到过期时间到了才返回修改后的页面,请问这个功能又是如何做出来的呢?


请实力派大哥讲解下:


hao123.com、265.com、369.com这些网站导航站,但是他们启用了某种技术?当你访问过一次后,第二次再访问的时候,就会智能读取缓存,即:有更新就读取,没有更新就读取缓存。比如265.com只读取新的天气和即时新闻,剩下的就读取缓存,这样大大提高了网站的打开速度,即时把网线拔掉同样可以打开!

这样偶苦恼了很久,这期间看了很多文章,有朋友说:每个网站都有缓存,对,每个网站都有缓存,可是我们的网站并不自动读取,除非选择“脱机浏览”。


本人推断,功能主体功能实现在代码里面。因为在断线的情况下不采用脱机访问的情况能打开网站主体,而在连网后首先加载完缓存文件在尝试连接远程服务器,一定在代码里面有所判断。

我清除完所有cookies 和临时文件 ,然后打开hao123加载出临时文件。 一步步删减,剥减到最后的5个文件。usertrack[1].js base[1].js main_201103221200[1].js hao123[1].htm config_201012151200[1].js 有这5个文件还能实现此功能 缺一不可。


[解决办法]
首先,向楼主道歉,不该对你指指点点
其次,我帮你推荐下,让更多的CSDNER来帮你解疑答惑
最后,本帖中所有争论均不删除(除人身攻击外),所以大家畅所欲言。
[解决办法]
看来还有很多人不知道其背后的原理.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存放)并呈现.
所有的过程对于前台来说是透明的.


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

探讨

引用:
http://www.gzsums.edu.cn/webclass/html/page.html#lang

楼主可以试试这个网站里的类似网页是不是也有“高深的网站静态技术”。

我清除完
C:\Documents and Settings\Admin\Local Settings\Temp\cookies
C:\Documents and S……

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

引用:
引用:

引用:
http://www.gzsums.edu.cn/webclass/html/page.html#lang

楼主可以试试这个网站里的类似网页是不是也有“高深的网站静态技术”。

我清除完
C:\Documents and Settings\Adm……

------解决方案--------------------


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

引用:

引用:
引用:

引用:
http://www.gzsums.edu.cn/webcl……

[解决办法]
探讨

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

引用:

引用:
引用:

引用……

[解决办法]
探讨
引用:
引用:
引用:
设置缓存还可以在iis那头设置的
详细内容可以抓包看看每次请求网站返回的状态码。。。。304什么的

引用:

引用:
引用:

引用 ……

[解决办法]
A little knowledge is a dangerous thing, so is a lot.

[解决办法]
探讨

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

引用:

引用:
引用:

引用……

[解决办法]
这种事,说白了就是利用浏览器的缓存机制,

即使有其它的东西,也是以这个为基础的。。。

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

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

引用:
引用:

引用:
http://www.gzsums.edu.cn/webclass/html/page.html#lang……

[解决办法]
探讨

引用:

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

引用:

引用:
引用……

[解决办法]
修改HOST文件可以实现,我以前试过
[解决办法]

读书人网 >JavaScript

热点推荐