.net 内联css性能问题

.net 内联css性能问题,.net,html,css,.net,Html,Css,我的公司雇佣了一家开发公司来制作一些复杂的软件。似乎他们正在使用.NET framework编写代码。我不知道这是否与.NET有严格的关联,但在查看HTML的结构时,我注意到了许多内嵌CSS。格式中有很多div 还有具有长ID的元素id=“ctl00\u ctl00\u ctl00\u MainContent\u MainContent\u BodyContent\u grid\u DXDataRow0” 这些长字符串文本和长内联样式声明是否会影响站点的性能?(我注意到一些滞后的问题,不知道这

我的公司雇佣了一家开发公司来制作一些复杂的软件。似乎他们正在使用.NET framework编写代码。我不知道这是否与.NET有严格的关联,但在查看HTML的结构时,我注意到了许多内嵌CSS。格式中有很多div

还有具有长ID的元素
id=“ctl00\u ctl00\u ctl00\u MainContent\u MainContent\u BodyContent\u grid\u DXDataRow0”


这些长字符串文本和长内联样式声明是否会影响站点的性能?(我注意到一些滞后的问题,不知道这是由于一些脚本还是复杂的HTML)或者.NET动态地编写这个HTML,因此计算所有这些
位置:绝对
值需要很长时间。或者,当浏览器呈现网页时,这样的文本字符串可以忽略不计吗?

我怀疑这是多种因素的组合

首先,时髦的ID是一个.NET的东西——它是站点中元素层次结构的指示。它可以被优化和/或禁用,但通常是无害的。查看页面的源代码并查找名为VIEWSTATE的表单变量-我怀疑它很大(他们使用的所有ID都意味着有很多服务器端控件参与VIEWSTATE),这可能是一个问题

长/动态生成的ID也会使编写与页面上的元素交互的客户端代码变得更加困难

所有的内联样式可能都来自他们用来进行布局的WSYIWYG编辑器。这些工具通常会生成令人讨厌的HTML,但“完成任务”

您可能担心的唯一性能问题是交付到浏览器的内容的大小,随着长ID和内嵌样式的增加,内容的大小会变大。我怀疑一旦出现性能问题就不会有了

然而,这可能会使以后修改站点布局更加困难


希望这有帮助

内联CSS永远不会被缓存,就像HTML永远不会被缓存一样。外部CSS文件确实会被用户的浏览器缓存和重用,因此会影响性能。(这同样适用于Javascript内联文件和外部文件。)


内联CSS也很难维护,并且会使HTML文件本身变大。我认为长ID本身不是问题。

这些ID是使用ASP.NET WebForm框架自动生成的。要查看是否存在性能问题,可以使用适用于chrome或firefox的页面速度插件。我的猜测是,它们不是,因为浏览器通常将它们存储在hashmap中,因此查找它们的速度非常快

至于渲染时间,请使用页面检查器(内置chrome/Safari)或firebug(Firefox插件)。网络窗格通常会告诉您在每个资源上花费了多少时间

我的猜测是延迟是在任何数据发送到客户端之前。当网页上有很多控件,或者需要从数据库获取大量数据时,WebForm可能会占用大量资源。还要检查查看状态的用法。(如果你不知道它是什么,请在谷歌上查看)如果你不小心的话,WebForm会在你的页面中插入数百KB的数据,并且每次你点击一个按钮,这些数据都会被发送回服务器


猎得好

是的,内联CSS比单独CSS文件中的CSS慢。 不,我怀疑长ID在性能方面是否会产生任何影响

然而,即使这些事情是个问题,它们也不太可能成为问题。解决您所看到的问题将是微观优化。没有一款主流浏览器会在内联CSS方面给您带来任何明显的性能问题。它是网页代码的标准元素,即使通常有更好的方法。至于长字符串。。。嗯,浏览器的渲染引擎在解析长字符串方面得到了高度优化,所以我认为几个长ID不会导致任何问题

如果你有一般的性能问题,我会说这听起来像是更深层次的问题

我建议使用像Firebug或Chrome developer工具这样的工具在站点上运行一些评测,并更详细地找出它的慢之处。用于这种调试的工具现在已经相当先进了,只要稍加努力,您应该能够非常准确地确定问题所在。可能是服务器端代码速度慢:您将看到HTML和Ajax的长页面加载。或者可能有些Javascript例程速度很慢:分析工具会准确地显示哪些调用占用的时间最多


我的直觉是,你学到的这些东西是一个更根本的潜在问题的症状:坦率地说,我觉得你雇来编写代码的人听起来不是很擅长。试着看看他们编写的源代码,感受一下代码的质量。

是的。不仅是内容本身的大小,而且服务器可能会忙于生成内容。ASP.NET并不是你能找到的最节省资源的系统。我想我不会走那么远。您可以在任何平台上用任何语言编写错误代码。NET在我看来做得很好。谢谢你的帮助。实际上,元素
VIEWSTATE
相当长。Stackoverflow甚至不允许我将其粘贴到评论中,因为它有1627个字符长。你认为这有问题吗?这个值代表什么?有没有办法“修复”它以缓解性能问题?非常感谢@n8wrl:您确实可以用任何语言编写糟糕的代码。然而,OP是为代码付费的人,因此他有权期望代码具有合理的质量,不管它是用什么语言编写的。即使从我们得到的一些提示来看,也可以公平地说,在维护方面不太可能是+1-