gpt4 book ai didi

php - 缓存页面资源

转载 作者:太空宇宙 更新时间:2023-11-04 05:11:32 25 4
gpt4 key购买 nike

为了减少对 UI Assets (JS/CSS) 的 HTTP 请求,我编写了一个 PHP 脚本来组合这些文件并将其提供为:“assets/basic,login,jquery-ui-10.css”和这工作正常,但我决定更进一步,并要求浏览器通过在 PHP 脚本中添加过期 header 来缓存这些 Assets 组合器(我这样调用它们)。当然,我在这里使用 htacess RewriteRule 功能来引用这个脚本 assets.php?files=basic,login,jquery-ui&type=css&version=10 到上面的那个,让它看起来像一个 CSS 文件供浏览器缓存它(这样看起来不错 :))。我还使用“version”参数强制浏览器更新文件,但那没有发生!!,我添加了这些 header 信息来缓存文件:

    header("HTTP/1.1 304 Not Modified");
header("Expires: Sat, 1 Jun 2015 12:00:00 GMT");
header("Cache-Control: must-revalidate");

然而,当我尝试更改上面 URL 字符串中的版本参数时,它不会下载新文件内容,尽管文件名已更改 > 对于浏览器

我在这里做错了什么,我怎样才能强制浏览器重新下载新文件 > 具有不同的名称(但仍发送上述 header )

提前致谢

最佳答案

正如 Quentin 所说,您必须只发送 304 响应以响应 IF-Modified-Since 或 If-None_match 请求。通过发送 304 响应,您告诉浏览器使用缓存的副本即使它没有

在实践中,使用 304 响应实际上可能会破坏提高性能的目的,通常最好忽略条件请求并使用内容 和新的缓存指令进行 200 响应

如果您希望缓存内容,则发送一个 max-age 以及一个 Expires header (只有 HTTP/1.0 客户端才需要 expires header - 所有现代浏览器都实现 HTTP1/1 - 即使您明确告诉他们使用 HTTP/1.0)。

例如

header("Expires: Sat, 1 Jun 2015 12:00:00 GMT");
header("Cache-Control: max-age=94608000,must-revalidate");

关于php - 缓存页面资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9227870/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com