请看以下代码:主页面main.aspx<%@ page language="C#" autoeventwireup="true" inherits="Default, App_Web_wubpurpf" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html;charset=utf-8" /><title></title>
<link rel="stylesheet" type="text/css" href="../css/in.css" />
<script type="text/javascript" src="../mt.js"></script>
<script type="text/javascript" src="http://www.abc.com/aa/bb/cc/mt.js"></script>
<script type="text/javascript" src="../mt.js"></script>
</head>
<body>
<iframe frameborder="0" name="if1" src="test.aspx"></iframe>
</body>
</html>上面加载的三个JS文件是同一个JS文件。第一个和第三个重复加载。
第二个是使用绝对路径加载。
iframe页面test.aspx<%@ page language="C#" autoeventwireup="true" inherits="Default, App_Web_wubpurpf" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html;charset=utf-8" /><title></title>
<link rel="stylesheet" type="text/css" href="../css/in.css" />
<script type="text/javascript" src="../mt.js"></script>
<script type="text/javascript" src="http://www.abc.com/aa/bb/cc/mt.js"></script>
<script type="text/javascript" src="../mt.js"></script>
</head>
<body>
</body>
</html>iframe页面test.aspx与主页面几乎一样,只是没有iframe页面。首先说明构造这样的页面只是要解开我心中的疑惑,这样的页面在实际中可能没有什么功能。
我的疑惑有以下几点:
1.怎样算一次完整的HTTP请求
像这样带iframe或者frameset框架集的页面,在请求时算几次HTTP请求?
2.怎样算第一次HTTP请求
3.由于iframe加载的JS文件与主页面加载的JS文件完全一样,
请问iframe加载的JS文件是算一次HTTP请求还是使用缓存呢?
因为我感觉主页面已经加载下来了。
4.对于重复加载的文件(不一定是JS文件)算是几个HTTP请求?
5.对于分别使用相对路径和绝对路径加载的同一个文件算是几个HTTP请求?
文件到了缓存以后,是只有一个文件吗,还是相对路径和绝对路径有自己的独立文件?正在做页面的优化工作,发现有重复的HTTP请求存在,所以有此一问。
大家帮帮忙!知道多少说多少啊!!!
谢谢!!!

解决方案 »

  1.   

    用火狐的debug插件监控下下载情况就知道了.
      

  2.   

    当这个csdn页面被加载时,要请求服务器30多次。
      

  3.   

    但下载的时间有长短。难道firedebug屏蔽了缓存
      

  4.   

    你按了请求的返回吗?
    不要只看request,还要看看response
    JS文件虽然发了请求,但是response应该是304,而不是200
      

  5.   

    还有一点很有趣,如果按F5,显示有5次请求;
    如果按Enter或Ctrl+F5,显示有6次请求。reponse:
    cache-control: private
      

  6.   


    任何浏览器缓存的东西,也是仍然要首先请求服务器的。然后服务器返回说:“No Modify!”,这样浏览器才使用本地缓存。js、图片等都是如此。
      

  7.   


    有可能吧。我没有使用过那个玩意儿。但是如果你用一个比较专业的http调试器就会发现,例如我现在监控的一样,这个页面刷新一次向8、9个不同的域名通信了55次。