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">
我使用了样式属性来避免请求该页面两次。但是,我仍然需要知道:为什么会提出两个请求?我想了解避免重新请求页面的根本原因,因为它会使任何网站变慢。
编辑:这个问题与内联样式和使用 CSS 文件无关。这是为了避免出于性能原因无意中重新请求页面。
注意: On_Load 可能因多种原因被调用两次,请参阅 ASP.NET Page.OnLoad executes twice
- AutoEventWireUp 为 true,并且您覆盖 On_Load。
- 用户控件包含 AutoEventWireUp 且值为 true。没试过。
- 页面或母版页包含
<img src="#"> or <img src="">
最佳答案
我很确定 background
table
的属性元素需要图像的 URL。 (我认为它甚至不是该元素的正确属性,或者至少我从未见过它被使用。可能具有特定于浏览器的行为。)
如果是这样的话,那么这种类型就有意义了。在问题末尾您记下:
- The page or master page contains
<img src="#">
or<img src="">
看来这就是这里发生的事情。浏览器将该颜色标签解释为 URL,并向服务器资源发出请求以尝试获取它,因为哈希 URL 本身默认为当前页面。在 anchor 标记中,它只会将焦点移动到页面上的该标记,但在资源引用标记中(例如 img
,但在本例中 table
上的属性需要 URL),它必须提出另一个请求。
更新:对该属性进行一点谷歌搜索会发现许多类似于 this one 的页面。 ,这似乎表明它需要一个 URL。
确实,table
元素似乎正式没有 background
属性。至少not in HTML 4或HTML 5 .
关于asp.net - 内联样式会导致额外的请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9605772/