如何针对慢速数据连接优化我的网站?

时间:2011-08-05 18:25:29

标签: javascript asp.net optimization minify

这里的解决方案运行良好,但是它们非常耗费人力。对于希望在旧的asp.net解决方案上执行类似增强功能的任何人,我强烈建议将项目切换到MVC,以便利用脚本和样式捆绑。 .aspx文件在MVC项目中按预期工作。


我即将开始为我们的某个产品执行一些性能增强。  我们的用户使用非常慢的无线电连接到网络。应用程序的主要瓶颈是网络和数据库。我将专注于减少应用程序的网络占用空间。

在开始拆除UpdatePanels,删除不必要的内容以及我能想到的任何其他内容之前,我将首先介绍一些“快速获胜”。 现在我有一些事情我认为我已经准备好实施了 其中包括

编辑:资产缩小和空白区域清理工具可以很好地协同工作。

但是我有一些事情我不确定如何处理。

  1. 某些微软资源(WebResource.axd?d=blahblahScriptResource.axd?d=blahblah)未缩小。 ThisThis以及其他一些内容取决于页面。 Microsoft.Ajax虽然很好。如果这些文件没有自动缩小,我该如何手动缩小这些文件?我错过了某个地方的设置吗?

  2. 是否可以使用我的javascript将微软资源合并到一个js文件中?

  3. 401错误,在小提琴手中,我可以看到我第一次点击网站时总会出现401错误,紧接着是正常的200.其他资源也会在第一次调用时随机出现401。是否需要配置某种IIS设置以删除此不需要的呼叫?

  4. aspx文件中的Javascript。不幸的是,我们的aspx文件中有很多js,以及在我们的代码中使用ScriptManager.RegisterStartupScript渲染的大量javascript。我如何在aspx标记中的<script>标签内缩小javascript?

  5. Favicon,这可以被禁用吗?如果不是最好的东西是什么?
  6. 更新

    1. Mads Kristensen的合成器很棒。但是我发现有些页面包含14个以上的axd引用会产生404.15错误(查询字符串太长,即只有bug)我的解决方法是gzip和base64编码查询字符串。

    2. 我发现将我的js包含在.axd文件中是一项徒劳无功的任务,因为每页的.axd文件都不同。让我的静态js文件单独生成一个额外的服务请求,但它将保持缓存在客户端上,而不是让客户端重新下载这些脚本作为组合的js axd文件的一部分。

    3. 我启用了匿名身份验证。没有更多问题。

    4. 没有进展。

    5. 我发现将favicon.ico放在根部是必要的。我想这可能只是因为我的应用程序的设计方式。

7 个答案:

答案 0 :(得分:5)

合并Microsoft脚本资源:查看我用于拦截WebResource(以及其他脚本和css)文件请求的ContentGator项目并将它们合并在一起。我没有在几年内更新它,所以我不能说它开箱即用的程度如何,你至少应该能够重用一些代码。我不认为我记得添加缩小,但你应该能够很容易地添加它。我认为它也可以挂接到RegisterStartupScript,或者替代它,在那里你应该能够连接缩小。

据我所知,

Favicon 无法禁用,因为浏览器默认请求它。如果你真的不想要它,你可能只需要提供一个1x1像素的ico,这样你就不会提供404,后续的请求将会产生304.使用CDN就可以了。你的其他静态资源。

此外,请查看http://developer.yahoo.com/yslow/以获取其他更常规的网络优化提示。

我头脑中的其他事情:

答案 1 :(得分:4)

1和2)优化.axd:http://madskristensen.net/post/Optimize-WebResourceaxd-and-ScriptResourceaxd.aspx 编辑死链接 Compress Script Resource .zip Google Cache of the article

3)HTTP 401 Unauthorized:您配置的身份验证机制正在执行此操作。如果您启用了Windows身份验证但未使用它...

4)嵌入式JS:MS AJAX Minifier

http://www.codeproject.com/Articles/81317/Automatically-compress-embedded-JavaScript-resourc

http://stephenwalther.com/blog/archive/2009/10/16/using-the-new-microsoft-ajax-minifier.aspx

对于与你的标记混合的JS,你无能为力。您可以创建自己的实用程序,使用RegEx从ASPX中解析它,并创建一个包含每页所有文件的文件,然后缩小该文件并插入1脚本引用。捕获SCRIPT标签内所有内容的正则表达式最终会变得相当复杂,因为像......这样的极端情况。

<script type="text/javascript">
document.write("<script>Dynamica, RegEx don't stop here -></script>");
</script>

5)Favicon:您的页面上有一个LINK标记,用REL =“快捷图标”引用它,或者您的网站根目录下有一个“favicon.ico”文件。如果您没有LINK标签,浏览器将自动检查您网站根目录中的favicon.ico。

答案 2 :(得分:3)

您还应该考虑在IIS中启用压缩。

IIS6 Compression

IIS7 Compression

答案 3 :(得分:1)

来自gtmetrix.com

  • 避免不良请求
  • 避免使用CSS @import
  • 避免使用CSS表达式(不建议使用)
  • 避免使用document.write
  • 合并外部CSS
  • 合并外部JavaScript
  • 使用CSS sprites合并图像
  • 延迟加载JavaScript
  • 推迟解析JavaScript
  • 启用gzip压缩
  • 启用Keep-Alive
  • 内联小CSS
  • 内联小型JavaScript
  • 利用浏览器缓存
  • 利用代理缓存(已弃用)
  • 使目标网页重定向可缓存
  • 缩小CSS
  • 缩小HTML
  • 缩小JavaScript
  • 最小化Cookie大小(已弃用)
  • 最小化DNS查找
  • 最小化重定向
  • 最小化请求大小
  • 优化图片
  • 优化样式和脚本的顺序
  • 跨主机名并行下载
  • 首选异步资源
  • 将CSS放入文档头
  • 从静态资源中删除查询字符串
  • 删除未使用的CSS
  • 从一致的网址提供资源
  • 提供缩放图像
  • 从无Cookie域提供静态内容
  • 指定缓存验证程序
  • 提前指定字符集
  • 指定Vary:Accept-Encoding标头
  • 指定图像尺寸
  • 使用高效的CSS选择器

你可以使用gtmetrix工具,ySlow或谷歌的页面速度来查看所有这些对它的影响,但是这个gtmetrix工具通常很棒,并且为你组合了各种功能,并且做了一些自动生成,可以帮助你改进版的CSS文件等。

答案 4 :(得分:0)

http://wiki.asp.net/page.aspx/80/aspnet-optimization/

有很多关于各种元素的资源,你可以/应该在asp.net上制作speedster web应用程序! Njoy:)

答案 5 :(得分:0)

我认为无论用户连接速度如何,都应优化网站以获得最佳性能。

网站性能/速度会影响用户体验,另一方面影响整体网站目标/转化,因此创建快速响应的网站并加快现有网站应该是每个Web开发人员/前端工程师等的主要目标之一。 / p>

无论如何,这些是两个巨大的资源,来自两个巨头: http://developer.yahoo.com/performance/rules.html http://code.google.com/speed/

最佳

答案 6 :(得分:0)

您是否为网站图片和样式等静态资源启用了客户端缓存?他们对第一页视图没有帮助,但会在后续视图中加速很多事情。

无法禁用Favicon,但可以使用数据:url在现代浏览器中删除请求本身。例如,这会导致页面具有slashdot的favicon而不发送任何请求:

<link rel="shortcut icon" href="data:image/x-icon;base64,AAABAAEAEBAQAAEABAAoAQAAFgAAACgAAAAQAAAAIAAAAAEABAAAAAAAgAAAAAAAAAAAAAAAEAAAAAAAAAB4eE0AX18OAP///wBeXisAYWETANPTxACrq4cAgYEaAEhJEgBKSiYAkJF3AL29pgBiYjAAVFQQADQ0CgBCQg4AWe7u7u7u7pWe7u7u7u7u6e7u7u7u7u7u7/ZVr/+rz/7v+iIp8CJf/v//UibwIl////8CIj+mz//4iIUiuIiIj/iIjCIgiIiPjd3dsiXd3diN3d1CIq3d2I3d3dYiLd3Y0RERFGZsERHUERERERERRDd3d3d3d3dzXERERERERMUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" type="image/x-icon" />

请记住,为favicon启用客户端缓存应该可以节省更多字节,然后将其嵌入到您发送的每个页面中。