代码之家  ›  专栏  ›  技术社区  ›  dzhi

通过.htaccess缓存Apache服务器端文件?

  •  2
  • dzhi  · 技术社区  · 14 年前
    1. 我将开始新的网站,并将包括几个JS libs和想知道如何 文件模板应与 上的媒体和JS文件?

    2. 有什么能更好地压缩, 广州国际机场 放气 ?

    我在问CDN问题,因为GoogleCDN提供的一些脚本可能会更新,并最终破坏网站布局,所以我认为,如果要以相同/接近相同的速度工作,最好在本地托管它们,并通过webserver缓存。

    1 回复  |  直到 14 年前
        1
  •  0
  •   Robin Rieger    12 年前

    (抱歉,代表太低,无法发表评论)

    在包含几个js文件方面,您应该记住一些事情,重新构建站点。首先,这些文件中的每一个都是一个请求,如果您为它们提供服务,它将在您的服务器上产生一些开销。即使在cdn上,它仍然是客户机需要发出的请求。如果你的站点设置了一个cookie,那么每个请求都会有更多的开销。我之所以提到这个是因为你的缓存,是因为你问了re-CDN。我的意思是,您应该首先考虑从哪里提供内容,然后再考虑缓存。就我个人而言,我已经设置了第二个子url来提供这类内容,所以static.website.com。这样,内容在请求中的开销更少,您可以利用并行下载。所以是谷歌的CDN,是的,如果你有很多东西的话。如果您害怕它更改或只想在本地托管它,那么我建议您为此设置一个无cookie域。

    这就引出了缓存和压缩。如果你有很多文件,那么你可能会考虑把它们合并成一个文件,然后把它们提供给你。我要做的是得到我们使用的大约15个js文件,将它们全部放在一个文件中,并对其进行散列,使散列成为文件名。(注意,这是我在部署之前为构建步骤编写的一个小东西)。这样,如果任何文件发生更改,那么散列将更改,您将立即提供新内容。你缓存js文件一年的原因是你无法控制客户端机器来获取新文件,除非你改变它的名称。需要记住的是,重新设置缓存、cdn和多个js文件

    就我个人而言,就像我说的,我将所有js文件合并为一个文件,然后将它们压缩为一个min文件(ajax minifier),并使用它。我对css文件也这样做。它位于一个子域上,并在那里得到服务。

    在apache中,我有以下内容:

    # Enable memory caching
    CacheEnable mem /
    # Limit the size of the cache to 50 Megabyte
    MCacheSize 51200
    AddOutputFilterByType DEFLATE application/x-javascript
    ExpiresActive On
    ExpiresDefault "access plus 1 second"
    # hashed file so safe for long out cache
    ExpiresByType text/javascript "access plus 1 years"
    

    最后一点,如果你要建立一个移动网站,你必须记住关键是保持低带宽成本。这对答案有何影响?好吧,对于我的移动站点,我只有2-3个自定义js文件,我以相同的方式提供这些文件,但是对于jquery移动站点,我从officerepo提供这些文件。为什么?因为客户端的移动设备已经缓存了它,因此它为它们节省了带宽。对于一台台式机,我并不太在意,但这在移动领域有很大的不同。

    干杯

    罗宾