【问题标题】:Recommended cache control method?推荐的缓存控制方法?
【发布时间】:2011-07-01 00:34:56
【问题描述】:

我希望强制刷新 JS/CSS 依赖项。

<META HTTP-EQUIV="CACHE-CONTROL" CONTENT="NO-CACHE"> 会为此工作,还是只会强制刷新页面本身的内容?

【问题讨论】:

    标签: javascript css dependencies


    【解决方案1】:

    您可以使用服务器端语言为每个被拉入的文件附加时间戳:

    <?php $timestamp = time(); ?>
    <link href="shell.css?timestamp=<?=$timestamp?>" rel="stylesheet" type="text/css" />
    

    我发现元缓存标签不能始终如一地跨浏览器工作,所以如果我需要在页面刷新时强制重新加载某些内容,这是我的首选。

    【讨论】:

    • 对。使用文件的修改日期而不是当前时间也可能更有意义,这样文件只在需要时才重新加载,而不是在每次页面加载时重新加载。
    【解决方案2】:

    上述答案有效,但我可能宁愿在最后使用?version=1,以便在没有更改时缓存。设置 webservers 缓存策略也是有效的。

    这是一篇解释网页缓存的好文章:http://www.mnot.net/cache_docs/

    【讨论】:

      【解决方案3】:

      不,它只控制当前文档。如果您不想要带有随机查询字符串的丑陋 URI,那么是时候配置您的服务器了。假设 Apache:

      # mod_expires directives: 
      # enable expires/max-age headers and set default to 0 seconds from last access time
      ExpiresActive On
      ExpiresDefault A0
      # configure ExpiresByType on your specific types, eg ExpiresByType text/css A0
      
      
      
      # mod_headers directives:
      # send variety of no-cache directives, should cover any quirky clients and gateways
      Header set Cache-Control "max-age=0, private, no-cache, no-store, must-revalidate, proxy-revalidate, no-transform"
      Header set Pragma "no-cache"
      # enclose this in <Files> directive for specific file eg <Files *.js>
      

      如果满足以下要求,这些指令组也将在每个目录配置(.htaccess 文件)中工作(在共享环境托管的情况下):

      1. AllowOverride FileInfo 已生效
      2. mod_expiresmod_headers 已启用

      如果两者都启用 - 请注意组在 max-age 上重叠,您需要将其从 Header 中删除并通过 ExpiresXXXX 使用更精细的控制。 所描述的设置对于共享主机环境来说是相当常见的,所以请询问服务器管理员或自己尝试(如果未启用相应模块将返回500 Internal Server Error,如果未启用.htaccess处理则无效)

      【讨论】:

      • 不是我的服务器...呵呵。 :) 我最喜欢这种方法,即使我无法使用它。
      • @Michael,对不起,我没有提到共享主机的 .htaccess,更新了。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-16
      相关资源
      最近更新 更多