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

Bif*_*iff 10 javascript asp.net optimization minify

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


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

在开始拆除UpdatePanels,删除不必要的内容以及我能想到的任何其他内容之前,我将从一些"快速获胜"开始.现在我有一些事情,我认为我已经准备好实施
这些包括

编辑:资产缩小和空白清洁工具可以很好地协同工作.

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

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

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

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

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

  5. Favicon,可以这样做吗?如果没有,那么下一个最好的东西是什么?

更新

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

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

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

  4. 没有进展.

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

Dan*_*fer 5

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

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

另外,请访问http://developer.yahoo.com/yslow/以获取其他更常规的Web优化提示.

其他的事情在我的头顶:


Lou*_*cci 3

1和2)优化.axd:http://madskristensen.net/post/Optimize-WebResourceaxd-and-ScriptResourceaxd.aspx编辑 文章的死链接 压缩脚本资源.zip Google缓存

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

4)嵌入式JS:MS AJAX Minifier

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

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>
Run Code Online (Sandbox Code Playgroud)

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