我的网站是一个购物网站,通过检测浏览器标题,它会自动调整大小/样式并为移动/桌面浏览器安排一些零碎的东西。
重新排列一些东西的一个例子是购物车的位置。
在桌面浏览器视图中,购物车出现在右侧边缘。该站点被设计为在移动浏览器(即 iPhone)中更窄,因此在移动浏览器中显示时不存在右侧边距。在这种情况下,购物车被加载到标题中。
头部和购物车都是用户控件,而右侧边距内置在母版页中,因此,购物车用户控件的声明存在于母版页和页眉控件中。
我的 MasterPage 的相关标记如下所示
<div class="content">
<div id="leftMargin" runat="server"></div>
<div id="centre">
<asp:ContentPlaceHolder id="centreContent" runat="server">/asp:ContentPlaceHolder>
</div>
<div id="rightMargin" runat="server">
<controls:shopping ID="shoppingBasket" runat="server" />
</div>
</div>
然后我有代码隐藏,如下所示:
If Common.isMobile() Then
leftMargin.Visible = False
rightMargin.Visible = False
End If
Header
控件类似,除了隐藏一个完整的 div 之外,它隐藏了一个用户控件,即:
标记:
<div id="miniNav">
<div id="mobileCart" class="mobileCart insertCart">
<controls:shopping ID="shoppingBasket" runat="server" />
</div>
<!--- more buttons --->
</div>
代码:
If Common.isMobile Then
shoppingBasket.Visible = True
Else
shoppingBasket.Visible = False
End If
显然,但Common.isMobile
功能是确定我们是否显示移动版。
所以,经过冗长的解释,我的实际问题很简单。
鉴于上面的示例,当在任何一种情况下呈现页面时,服务器是否完全忽略了所有隐藏元素的编码/标记/数据库交互等,htmlControl.display=false
或者我是否导致服务器必须实际运行所有这些脚本两次,一旦被浪费,因为它实际上并没有做任何事情?