【问题标题】:Advice on integration of perf optimization into web application关于将性能优化集成到 Web 应用程序中的建议
【发布时间】:2010-11-24 19:16:02
【问题描述】:

我开发了一个 .net 3.5 c# web 应用程序,并希望对其进行一些性能改进。该应用程序有大量的javascript文件和css文件。

以下是我正在考虑实施的一些技术:

  • 合并javascript文件
  • 合并css文件
  • 最小化文件
  • 将 css 文件中的任何图像更改为 是 base64 编码的字符串或精灵

以上是我想要实现的一些示例,但我的问题是关于我如何才能做到这一点。

我正在考虑创建一个 MSBuild 任务来执行此操作。但我的并发症如下。

我有大量包含大量 javascript 文件的页面。我想要的是当应用程序处于调试模式时,使用单个文件,如果处于发布模式,则使用组合文件。因此,复杂性的第一部分将是运行时间决策。

下一个问题是让构建任务知道要组合哪些文件。无论如何,构建任务是否可以查看每个页面上使用的 javascript 并在运行时基于此组合文件?

我以 javascript 为例,但同样适用于 css。

我遇到的另一个问题是一些用户控件也有 javascript,因此它们也将被考虑在内。不过,如果这不能实现,我不太担心。

最后一步是在运行时输出任何内部版本号或带有 javascript/css 文件的某个唯一编号作为参数,以使新版本中的缓存无效。

我知道我的问题很粗略,但如果可能的话,我只是在寻找一些建议。

谢谢。

【问题讨论】:

    标签: .net visual-studio performance optimization


    【解决方案1】:

    我建议不要单独(调试)与组合(发布);这会产生额外的战斗变量,您将最终会被此咬伤 - 但仅限于生产。缩小版与原始版的区别不太明确,但我们已经看到过 js 缩小器出错的情况;缩小器版本的行为不同。同样,如果某些 CSS 缩小器不喜欢输入(即使相同的 CSS 在您的浏览器中工作),它也会失败(通常发出一个空的 CSS)。出于这些原因,我会说在缩小版本上进行开发以更快地发现这一点。

    其他想法:

    • 确保您支持 gzip/deflate
    • 确保您支持过期标头
    • 图像精灵
    • 静态内容的 CDN 或类似内容(无 cookie;启用过期标头;静态文件模式下的 Web 服务器 - 无 CPU 开销)

    (是的,您需要将其与缓存破坏器结合使用)

    【讨论】:

      【解决方案2】:

      .NET port of the Yahoo! YUI Compressor 可能会让您更接近您想去的地方。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-12-10
        • 2012-02-14
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多