Javascript和CSS - 压缩和缓存

时间:2010-09-10 14:35:53

标签: javascript jquery css caching compression

我有一个巨大的缩小的JavaScript文件(同样适用于CSS)。我正在寻找一些下载和缓存速度方面的优化。我想为这两个文件设置expiry标头,这样只有2个HTTP调用我得到它们(直到我在URL中更改它们的版本号)希望它们被缓存。我的问题是 -

  1. 我在哪里设置到期标头?我是否需要将其设置为响应每个请求的一部分?或者我是否需要在Web服务器设置中进行设置?
  2. 如何压缩这些文件(JS和CSS)?我在哪里以及如何指定它?是正常的.zip还是.tar.gz压缩?如果是这样,另一端的普通浏览器会解压缩并使用这些脚本吗?
  3. 是否可以将JS + CSS放在一个文件中,缩小并压缩它?这样我就可以使用单个HTTP请求了解?这会有用吗?我的猜测不是,因为JavaScript运行<script>标记,CSS运行<link>标记。但是,仍然可以探索这种思路吗?也许可以使用Javascript本身在加载后动态地将CSS插入到DOM中。但这会对页面加载产生什么样的影响。由于浏览器在执行任何Javascript之前将CSS应用于DOM。
  4. 任何帮助,欢迎提出建议......

2 个答案:

答案 0 :(得分:2)

首先,您已使用网址中的版本号进入正确的轨道。 (我假设它不在查询字符串中,而是在实际的资源路径中。)V。smart。

直接问题的答案:

  1. 在您的网络服务器配置中。

  2. 在您的网络服务器配置中;您应该可以选择启用gzip压缩,此时使用现代服务器它只是发生(tm)。

  3. 是的,但你可能不想这样做。您可以将CSS嵌入JavaScript文件中作为一堆字符串文字,然后在页面加载时输出style元素(通过document.write ,这会破坏你的明显的页面加载性能,但是通过DOM方法)。但如果在客户端上禁用JavaScript,那将是一个问题。 :-)可能还有渲染延迟,无论如何,你可能没有足够的复杂性使它变得有价值。

  4. 需要考虑的其他事项:

    • 如果您的网站设置了Cookie,您希望避免从将要发送回cookie的路径提供JS和CSS,因为请求中cookie的存在可能会破坏某些缓存。这就是为什么你经常看到从不同的域或子域加载这些资源的原因。
    • 看看JS和CSS minifiers,如果你还没有 - 你知道的话,删除不必要的空白的东西,那种东西。
    • 如果您关注速度,请查看为您的JS和CSS使用CDN。他们比以前便宜了很多。这是一个有趣的地方来看待他们:http://cloudharmony.com/speedtest到目前为止(这是早期的日子)我对MaxCDN的39.95美元介绍(通常是99美元)给我留下了深刻的印象。

答案 1 :(得分:0)

这是我真正感兴趣的主题,刚开始看压缩和加速我的网站/节省带宽。

我发现this article非常实用且有趣: