内联样式会导致额外请求

时间:2012-03-07 16:50:50

标签: asp.net performance iis

On_Load在页面中被调用两次。使用Firebug后,我发现它要求

http://localhost/default.aspx

然后再向

发出请求

http://localhost/default.aspx#ced3db

我搜索"#ced3db"并在页面的<table>中找到它。当我删除它的背景属性时,问题就会消失。

<table width="430" height="281" border="0" 
    background="#ced3db" cellpadding="0" cellspacing="0">

我使用了style属性来避免两次请求页面。但是,我仍然需要知道:为什么有两个要求?我想了解避免重新请求页面的根本原因,因为它可以使任何网站变慢。

编辑:该问题与内联样式与使用CSS文件无关。这是为了避免出于性能原因而无意中重新请求页面。

注意: On_Load可以被调用两次,原因有多种,请参阅ASP.NET Page.OnLoad executes twice

  • AutoEventWireUp为true,您重写On_Load。
  • 用户控件包含带有true的AutoEventWireUp。没试过。
  • 页面或母版页包含<img src="#"> or <img src="">

2 个答案:

答案 0 :(得分:3)

我非常确定background元素的table属性需要图片的网址。 (我认为它甚至不是该元素的正确属性,或者至少我从未见过它。可能有特定于浏览器的行为。)

如果是这种情况,那么这种是有道理的。在问题的最后你注意到:

  
      
  • 页面或母版页包含<img src="#"><img src="">
  •   

所以这似乎就是这里发生的事情。浏览器将该颜色标记解释为URL并向服务器资源发出请求以尝试获取它,因为哈希URL本身默认为当前页面。在锚标记中,它只会将焦点移动到页面上的该标记,但是在资源引用标记中(例如img),但在这种情况下,table上的属性需要URL )它必须提出另一个请求。

更新:该属性上的一点点Google搜索显示了类似于this one的多个页面,这似乎表明它正在等待一个网址。

实际上,table元素似乎正式具有background属性。至少not in HTML 4HTML 5

答案 1 :(得分:-1)

background属性不接受十六进制颜色作为输入。无论如何你应该使用CSS。请改用background-color CSS属性。

请参阅此小提琴,因为background属性无效。

http://jsfiddle.net/SrEDB/

这适用于CSS属性。

http://jsfiddle.net/SrEDB/