8

我最近对如何在 Web 应用程序中处理共享的 javascript 和 css 文件有了一些想法。

在我正在处理的当前 Web 应用程序中,我得到了大量不同的 javascripts 和 css 文件,它们放置在服务器上的一个文件夹中。一些文件被重用,而另一些则没有。

在生产站点中,加载大量 HTTP 请求以及加载大量不必要的 javascript 和冗余 css 是非常愚蠢的。解决方案当然是在每页创建一个仅包含必要信息的大捆绑文件,然后将其最小化并压缩(GZIP)发送到客户端。

如果您打算创建一组 javascript 文件并手动最小化它们,则无需担心,但由于该应用程序会持续维护并且事情确实会发生变化和发展,因此在推出时手动执行此操作很快就会变得令人头疼将 javascripts 和/或 css 文件更改为生产的新更新。

有什么好的方法来处理这个?你如何在你的应用程序中处理这个问题?

4

5 回答 5

4

我构建了一个库Combres,它正是这样做的,即缩小、组合等。它还自动检测本地和远程 JS/CSS 文件的更改并将最新的推送到浏览器。它是免费和开源的。查看这篇文章以了解 Combres 的介绍。

于 2010-06-11T06:18:27.830 回答
2

我正在启动的网站上处理完全相同的问题。

我最近发现了一个名为SquishIt的项目(参见GitHub)。它是为 Asp.net 框架构建的。如果您不使用 asp.net,您仍然可以在这里了解他所做的工作背后的原理。

SquishIt 允许您创建命名的文件“包”,然后在整个站点中呈现这些组合和缩小的文件包。

于 2010-06-09T20:36:36.243 回答
1

CSS 文件可以分类并划分为逻辑部分(如 common、print、vs.),然后您可以使用 CSS 的导入功能成功加载 CSS 文件。重用这些小文件还可以使用客户端缓存。谈到Javascript,我认为你可以在服务器端解决这个问题,将多个脚本文件添加到页面,你也可以动态生成脚本文件服务器端但是为了客户端缓存工作,这些部分应该有不同的和静态的地址。

于 2010-06-09T20:35:48.327 回答
1

前段时间我编写了一个 ASP.NET 处理程序,它可以按需组合、压缩/缩小、gzip 和缓存原始 CSS 和 Javascript 源代码文件。例如,要引入三个 CSS 文件,它在标记中看起来像这样......

<link rel="stylesheet" type="text/css"
      href="/getcss.axd?files=main;theme2;contact" />

getcss.axd 处理程序读取查询字符串并确定它需要读取和缩小哪些文件(在这种情况下,它将查找名为 main.css、theme2.css 和 contact.css 的文件)。当它读完文件并压缩它时,它会将大的缩小字符串存储在服务器端缓存 (RAM) 中几个小时。它总是首先在缓存中查找,以便在后续请求中不必重新压缩。

我喜欢这个解决方案,因为...

  • 它尽可能减少请求的数量
  • 部署不需要额外的步骤
  • 非常容易维护

唯一的缺点是所有样式/脚本代码最终都将存储在服务器内存中。但是现在 RAM 是如此便宜,以至于它不像以前那么重要了。

另外,值得一提的是,确保查询字符串不会受到任何有害路径操作的影响(仅允许 AZ 和 0-9)。

于 2010-06-09T21:33:42.280 回答
-1

您所说的称为缩小

有许多针对不同平台和语言的库和助手可以帮助解决这个问题。由于您没有发布您正在使用的内容,因此我无法真正将您指向与您自己更相关的内容。

这是关于 google code- minify的一个项目。

是一个即时执行所有这些操作的 .NET Http 处理程序示例。

于 2010-06-09T20:29:33.043 回答