Javascript和CSS-压缩和缓存

Javascript和CSS-压缩和缓存,javascript,jquery,css,caching,compression,Javascript,Jquery,Css,Caching,Compression,我有一个巨大的小型JavaScript文件(CSS也是如此)。我希望在下载和缓存速度方面进行一些优化。我想为这两个文件设置到期头,这样我只需要2个HTTP调用就可以得到它们(直到我在URL中更改它们的版本号为止),并希望缓存它们。我的问题是— 我在哪里设置过期标题?我是否需要将其设置为每个请求响应的一部分?或者我需要在web服务器设置中设置它吗 如何压缩这些文件(JS和CSS)?在哪里以及如何指定它?是正常的.zip压缩还是.tar.gz压缩?如果是这样,另一端的普通浏览器会解压它并使用这些脚本

我有一个巨大的小型JavaScript文件(CSS也是如此)。我希望在下载和缓存速度方面进行一些优化。我想为这两个文件设置到期头,这样我只需要2个HTTP调用就可以得到它们(直到我在URL中更改它们的版本号为止),并希望缓存它们。我的问题是—

  • 我在哪里设置过期标题?我是否需要将其设置为每个请求响应的一部分?或者我需要在web服务器设置中设置它吗
  • 如何压缩这些文件(JS和CSS)?在哪里以及如何指定它?是正常的.zip压缩还是.tar.gz压缩?如果是这样,另一端的普通浏览器会解压它并使用这些脚本吗
  • 可以将JS+CSS放在一个文件中,缩小并压缩它吗?这样我就可以通过一个HTTP请求了?这样行吗?我猜不是,因为JavaScript是通过
    标记运行的,CSS是通过
    标记运行的。但是,这一思路是否可以探索?也许可以使用Javascript本身在加载后将CSS动态插入DOM。但是这会对页面负载产生什么样的影响呢。因为浏览器在任何Javascript执行之前都会将CSS应用于DOM

  • 欢迎您提供任何帮助和建议。

    首先,您已经在URL中使用了版本号。(我假设它不在查询字符串中,而是在实际的资源路径中。)

    回答您的直接问题:

  • 在您的web服务器配置中

  • 在web服务器配置中;您应该可以选择启用gzip压缩,在现代服务器上这一点就发生了(tm)

  • 是的,但你可能不想。您可以将CSS作为一组字符串文本嵌入到JavaScript文件中,然后在页面加载时输出
    样式
    元素(不是通过
    document.write
    ,这会降低页面加载性能,而是通过DOM方法)。但如果在客户端上禁用JavaScript,则会出现问题。:-)也可能会有渲染延迟,而且在任何情况下,您可能没有获得足够的时间来让复杂性值得

  • 其他需要考虑的事项:

    • 如果您的站点设置了cookie,您希望避免从cookie将被发送回的路径为JS和CSS提供服务,因为请求中存在cookie可能会破坏某些缓存。这就是为什么您经常看到这些资源从不同的域或子域加载
    • 看看JS和CSS缩略器,如果你还没有——你知道,删除不必要的空白之类的东西
    • 如果你关心速度的话,可以考虑在JS和CSS中使用CDN。它们比以前便宜多了。这是一个看它们的有趣的地方:到目前为止(这只是早期的几天),我对这本售价39.95美元的简介(通常是99美元)印象深刻

      • 这是一个我非常感兴趣的话题,我刚刚开始研究压缩和加速我的网站/节省带宽


        我发现非常有用和有趣:

        @Crowder。是,版本号在实际资源路径中。这样,我想,稍后要否决缓存版本,我所需要做的就是更改url中的verion参数@克劳德。你所有的答案都有道理。谢谢,很高兴现在就试用:)@Crowder忘了提到。我正在做JS缩小(即删除空白)和最小变量替换。例如,var被命名为var a1。我看到这东西真的减少了你的JS文件的大小很多倍。我发现这种minify+压缩模式通常会使原始尺寸减少75-80%。@Crowder你提到的饼干非常酷!所以,如果我创建一个新的子域,比如说media.mydomain.com&从这个子域路由我的所有静态媒体,它会帮助我的缓存命中吗?