【问题标题】:How to make JS and CSS cacheable until changes? [closed]如何使 JS 和 CSS 在更改之前可缓存? [关闭]
【发布时间】:2016-05-08 20:44:09
【问题描述】:

如何使 JS 文件和 CSS 文件可缓存,直到文件被更改?我在 apache 服务器上使用 HTML、JS、CSS、PHP。不得缓存 PHP 页面。提前致谢!

编辑:Google PageSpeed Insights 所说的:

【问题讨论】:

  • 据我所知,它们将被浏览器自动缓存,假设您正在谈论在浏览器中缓存
  • 但是 Google PageSpeed 洞察力说我必须通过设置过期日期来使我的 JS 和 CSS 可缓存。
  • 必须有 1000 篇关于此主题的文章,这是 Google Page Speed Help 中的一篇 developers.google.com/web/fundamentals/performance/…
  • @blobliebla 这不是一个代码编写服务,做一些实际的研究。
  • @jonrsharpe 我做了,但我没有正确理解。这就是我在 StackOverflow 上问这个问题的原因。

标签: javascript php css apache caching


【解决方案1】:

对于在 php 文件中设置的 php,请将 expiration date 放在非常大的标题中

header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
header("Expires: Sat, 26 Jul 2020 05:00:00 GMT"); // 2020

或过去的日期

header("Expires: Sat, 26 Jul 1999 05:00:00 GMT"); // 1999

要让浏览器重新加载缓存页面,你可以将标题更改为这样的想法

 header ("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); 
 header ("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); 
 header("Cache-Control: no-cache, must-revalidate"); header("Pragma: no-cache");   

禁用缓存的htaccess规则

 <filesMatch "\.(html|htm|js|css)$">
 FileETag None
 <ifModule mod_headers.c>
  Header unset ETag
  Header set Cache-Control "max-age=0, no-cache, no-store, must-revalidate"
  Header set Pragma "no-cache"
  Header set Expires "Mon, 26 Jul 1999 05:00:00 GMT"
  </ifModule>
  </filesMatch>

【讨论】:

  • 但是如果我将过期日期设置为一周,并且我在过期日期之前更改了我的代码呢?
  • @blobliebla 查找 “缓存破坏”
  • 你能把它翻译成 .htaccess "code/rules" 吗?
  • 没有。没有什么是永恒的。一,因为用户可以通过删除缓存和cookie来更改浏览器或清除它
  • 浏览器通常会保留一定数量的磁盘用于缓存,如果空空间结束我认为它会删除缓存
猜你喜欢
  • 1970-01-01
  • 2021-03-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多