博客园  :: 首页  :: 管理

在博客园前辈 Cat Chen   的一文 对博客园URL的一些调整建议  中提到二级域名机制不利于搜索引擎的
收录, 听了颇有感叹, 我的博客到现在为止还只被google收录了首页呢,文章一篇也没录取. 当然文章没有被
收录的原因主要和我在博客园安家时间短(才一个星期),文章数量不多有关.


下面我来说说在二级域名情况下,ie 浏览器缓存策略的问题吧.
1. 对于网站优化来说,缓存优化是最为重要的一环,对于一些常用的,.静态的文件和
数据(主要是js,css,jpg,gif,静态html),只要用户浏览过一次,这些资源就应该被缓存起来,
等下次再访问的时候直接从客户端的缓存里面取,而不是通过internet从服务器上重新读取.

幸运的是:
   浏览器都很聪明,对于静态image,js,css他都会自动缓存.
   程序员更聪明,他们会告诉浏览器,禁止缓存那些动态的数据文件,比如 test.asp?action=update&id=1之类.


不幸的情况是:
1。浏览器缓存资源的时候是根据类似于 (http://......)等绝对路径来存取的.
     所以对于下面这个文件:    HeaderBg.jpg
    如果您通过 http://www.cnblogs.com/ashun/ 来访问我的博客的话,浏览器将缓存下面这个地址:
    http://www.cnblogs.com/Skins/KJC/Images/HeaderBg.jpg
    但是如果您通过   http://ashun.cnblogs.com/  来访问我的博客的话,
浏览器竟然完全不知道缓存里面已经有 HeaderBg.jpg这个文件.
    还是重新通过internet去服务器读取 这个文件,并缓存以下地址:
    http://ashun.cnblogs.com/Skins/KJC/Images/HeaderBg.jpg

   在浏览器的眼里,  www.cnblogs.com/ashun 和 ashun.cnblogs.com 是两个不同的网站,那文件当然被认为是不同的文件咯
对于缓存里面的文件是通过绝对路进来存取的

让我们来分析一下真实的数据.
  我刚刚依次访问过 http://ashun.cnblogs.com/  http://www.cnblogs.com/ashun/   http://www.cnblogs.com/cathsfz/

Line Started StartedDateTime Size Result URL
1  00:00:00.000 2006-Dec-04 06:48:04.532 54524 200 http://ashun.cnblogs.com/
2  00:00:01.444 2006-Dec-04 06:48:05.976 7539 200 http://ashun.cnblogs.com/Skins/KJC/style.css
3  00:00:02.065 2006-Dec-04 06:48:06.597 824 200 http://www.cnblogs.com/ashun/customcss.aspx
4  00:00:02.457 2006-Dec-04 06:48:06.989 18479 200 http://ashun.cnblogs.com/Skins/KJC/Images/HeaderBg.jpg
5  00:00:02.466 2006-Dec-04 06:48:06.998 653 200 http://www.cnblogs.com/images/xml.gif
6  00:00:02.521 2006-Dec-04 06:48:07.053 396 200 http://ashun.cnblogs.com/Skins/KJC/images/SubHeaderBg.gif
7  00:00:02.605 2006-Dec-04 06:48:07.137 1097 200 http://ashun.cnblogs.com/Skins/KJC/Images/icon-group.jpg
8  00:00:02.648 2006-Dec-04 06:48:07.180 4004 200 http://www.cnblogs.com/images/cnblogs_com/ashun/77221/t_lishun.JPG
9  00:00:02.695 2006-Dec-04 06:48:07.227 0 (Cache) http://ashun.cnblogs.com/
10  00:00:02.928 2006-Dec-04 06:48:07.460 378 200 http://ashun.cnblogs.com/Skins/KJC/Images/xmlsmall.gif
11  00:00:03.025 2006-Dec-04 06:48:07.557 653 200 http://ashun.cnblogs.com/images/xml.gif
12  00:00:03.324 2006-Dec-04 06:48:07.856 1000 200 http://www.cnblogs.com/ashun/images/icon-titledoc.gif
13  00:00:05.081 2006-Dec-04 06:48:09.613 2843 200 http://ashun.cnblogs.com/script/ShowHidden.js
14  00:00:05.629 2006-Dec-04 06:48:10.161 397 200 http://ashun.cnblogs.com/Skins/KJC/images/ColumnHeaderBg.gif
15  00:00:25.166 2006-Dec-04 06:48:29.698 54517 200 http://www.cnblogs.com/ashun
16  00:00:25.951 2006-Dec-04 06:48:30.483 7539 200 http://www.cnblogs.com/Skins/KJC/style.css
17  00:00:26.470 2006-Dec-04 06:48:31.002 0 (Cache) http://www.cnblogs.com/ashun/customcss.aspx
18  00:00:26.486 2006-Dec-04 06:48:31.018 18479 200 http://www.cnblogs.com/Skins/KJC/Images/HeaderBg.jpg
19  00:00:26.553 2006-Dec-04 06:48:31.085 396 200 http://www.cnblogs.com/Skins/KJC/images/SubHeaderBg.gif
20  00:00:26.630 2006-Dec-04 06:48:31.162 1097 200 http://www.cnblogs.com/Skins/KJC/Images/icon-group.jpg
21  00:00:26.641 2006-Dec-04 06:48:31.173 1000 200 http://www.cnblogs.com/
22  00:00:26.676 2006-Dec-04 06:48:31.208 378 200 http://www.cnblogs.com/Skins/KJC/Images/xmlsmall.gif
23  00:00:27.182 2006-Dec-04 06:48:31.714 1000 200 http://www.cnblogs.com/ashun/images/icon-titledoc.gif
24  00:00:28.471 2006-Dec-04 06:48:33.003 2843 200 http://www.cnblogs.com/script/ShowHidden.js
25  00:00:29.252 2006-Dec-04 06:48:33.784 397 200 http://www.cnblogs.com/Skins/KJC/images/ColumnHeaderBg.gif
26  00:00:42.287 2006-Dec-04 06:48:46.819 58979 200 http://www.cnblogs.com/cathsfz/
27  00:00:42.910 2006-Dec-04 06:48:47.442 0 (Cache) http://www.cnblogs.com/Skins/KJC/style.css
28  00:00:43.099 2006-Dec-04 06:48:47.631 509 200 http://www.cnblogs.com/cathsfz/customcss.aspx
29  00:00:43.350 2006-Dec-04 06:48:47.882 0 (Cache) http://www.cnblogs.com/Skins/KJC/Images/HeaderBg.jpg
30  00:00:43.667 2006-Dec-04 06:48:48.199 3238 200 http://www.copyblogger.com/wp-content/themes/copyblogger_20/images/rss.gif
31  00:00:43.988 2006-Dec-04 06:48:48.520 1198 200 http://www.cnblogs.com/Skins/KJC/images/icon-titledoc.gif
32  00:00:46.854 2006-Dec-04 06:48:51.386 0 (Cache) http://www.cnblogs.com/script/ShowHidden.js

 
说明一下:  
Size是文件大小,如果是0,.则说明是读取的cache  
Result如果是200则说明是读取的服务器,(Cache) 或者 304 则读取Cache

我们可以看到访问不同的二级域名,几乎所有的image 和 js 均是重新请求的,尽管他们是同一个文件.

博客园那么多的博客,如果访问每个人的博客,这些资源都只需要读取一次,不管对减轻服务器负担和提高
客户端浏览速度都是有很大帮助的.

解决办法:
  强制采用统一的绝对地址来访问资源.

例子:  
   css文件:
  background-Image:url(skins/kjc/images/test.gif)
   ===> 
        background-Image:url(http://www.cnblogs.com/skins/kjc/images/test.gif)
 
   html文件:
     <script src="test.js"></script>
     <link id="MainCss" type="text/css" rel="stylesheet" href="/Skins/KJC/style.css" />
  ===>
       <script src="http://www.cnblogs.com/test.js"></script>
      <link id="MainCss" type="text/css" rel="stylesheet" href="http://www.cnblogs.com/Skins/KJC/style.css" />

    js文件:
      var img=new Image()
      img.src="go_rush.gif"

   ===>
      var img=new Image()
      img.src="http://www.cnblogs.com/go_rush.gif"




   下期节目预告:
     怎么禁止浏览器,怎么删除客户端缓存?  对于动态页面,asp,php大家或许都知道通过http-header来控制cache了
对于静态文件 (gif.jpg,css,js)呢,怎么做?。。。  敬请关注,下期为您精彩献上