Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache 以编程方式清除web浏览器缓存_Apache_.htaccess_Caching_Browser_Cache Control - Fatal编程技术网

Apache 以编程方式清除web浏览器缓存

Apache 以编程方式清除web浏览器缓存,apache,.htaccess,caching,browser,cache-control,Apache,.htaccess,Caching,Browser,Cache Control,我在一个网站上工作,后台是PHP,前端是AngularJS。它是通过apache2.4提供的。 我的问题是,当我将我的网站更新到新版本时,一些用户看不到最新的修改,所以我添加了这个.htaccess,以强制每1小时清理一次缓存,但它没有像我预期的那样工作 FileETag None <ifModule mod_headers.c> Header unset ETag Header set Cache-Control "max-age=3600, must-r

我在一个网站上工作,后台是PHP,前端是AngularJS。它是通过apache2.4提供的。 我的问题是,当我将我的网站更新到新版本时,一些用户看不到最新的修改,所以我添加了这个.htaccess,以强制每1小时清理一次缓存,但它没有像我预期的那样工作

FileETag None
<ifModule mod_headers.c>
    Header unset ETag
    Header set Cache-Control "max-age=3600, must-revalidate, private" 
</ifModule>
filetag无
标题未设置ETag
标题集缓存控制“最大年龄=3600,必须重新验证,专用”

你能给我一个正确的缓存配置,让浏览器在有新版本可用时得到最后一次更新吗?

在构建过程中,你可以在静态文件(如JS/CSS)中附加一个查询参数,比如:
app.JS?1476109496
(其中,epoch是唯一的引用,如部署epoch、提交哈希或类似引用),这将导致浏览器请求新版本,而无需干扰您的.htaccess。

在构建过程中,您可以向静态文件(如JS/CSS)附加查询参数,如:
app.JS?1476109496
(其中,epoch是唯一引用,如部署epoch、提交散列或类似引用)这会导致浏览器请求一个新版本,而不需要干扰你的.htaccess。

这是没有更新的CSS和Javascript吗?如果是这样,为什么不用每次更改的递增数字重命名你的文件,例如
script1.CSS
。这将迫使浏览器更新到最新版本。@Kitson88,就是这样应该是一个解决方案?当然可以,但实际上使用缓存是有意义的。否则可以简单地拒绝缓存,一切都很好。headers模块实际加载了吗?你确定吗?为什么?@arkascha如果是一个解决方案,它将被放在回答框中。这是一个可以克服OP面临的问题的建议。Funn令人惊讶的是,同样的建议已经在这里发布了很多票:使用一个唯一的版本号(或纪元)在js/css中,构建文件名是一种非常常见的方法。@RyanAllan的回答很正确,不知道他为什么要删除它。这是不是正在更新的css和Javascript?如果是这样,为什么不以每次更改的递增数字重命名文件,例如
script1.css
。这将迫使浏览器更新到最新版本。@Kitson88,这应该是一个解决方案?当然可以,但实际上使用缓存是有意义的。否则,可以简单地拒绝缓存,一切都很好。headers模块实际加载了吗?你确定吗?为什么?arkascha如果这是一个解决方案,它将被放在回答框中。这是一个建议,可以克服有趣的是,同样的建议已经在这里发布了,并获得了大量的选票:使用一个唯一的版本号(或纪元)在js/css构建中,文件名是一种非常常见的方法。@RyanAllan的答案是正确的,不确定他为什么要删除它。这不能作为查询字符串使用,因为浏览器并不总是尊重这一点。最好在文件路径中有时间戳。@fire,Angular使用相同的机制来破坏浏览器缓存,使用标志——输出哈希all w在生成项目时。这不能作为查询字符串使用,因为浏览器并不总是遵守这一点。最好在文件路径中有时间戳。@fire,Angular使用相同的机制来破坏浏览器缓存,方法是在生成项目时使用标志--output hashing all。