gpt4 book ai didi

PHP 或 Apache 似乎正在缓存通过 file_get_contents 或 include 读取的文件(不需要的行为)

转载 作者:搜寻专家 更新时间:2023-10-31 21:14:44 25 4
gpt4 key购买 nike

我们的网络应用程序有版本号,在每次请求时提供给客户端,因此我们可以检测代码更新(即滚动更新)并显示一个弹出窗口,通知他们重新加载以利用最新更新。

但是我在服务器上更新版本号后遇到了一些奇怪的行为,其中一些请求返回新版本号而一些请求返回旧版本号,所以弹出窗口一直弹出直到你重新加载页面几次次。

最初我怀疑 apache 可能正在缓存它通过 file_get_contents 从磁盘读取的文件,所以我现在没有将版本号存储在纯文本文件中,而是将它存储在每个请求中包含的 php 文件中,但我遇到了完全相同的问题!

任何人都知道什么可能导致 apache 或 php 在我完成更新后自行提供旧信息?

编辑:我已经确认它不是浏览器缓存,因为我可以让客户端生成唯一的 url 到服务器(它可以通过重写处理),我仍然看到同样的问题,有些请求返回旧版本号,有些新的,清除浏览器缓存没有帮助

编辑 2:请求的响应 header

HTTP/1.1 200 OK
Date: Mon, 23 Jul 2012 16:50:53 GMT
Server: Apache/2.2.14 (Ubuntu)
X-Powered-By: PHP/5.3.2-1ubuntu4.7
Cache-Control: no-cache, must-revalidate
Pragma: no-cache
Expires: Sat, 26 Jul 1997 05:00:00 GMT
Vary: Accept-Encoding
Content-Encoding: gzip
Content-Length: 500
Connection: close
Content-Type: text/html

编辑 3:因此,尝试重现以获取我发现的响应 header 时,我只能通过我们的完整部署过程实现它,该过程涉及创建存储代码的版本化文件夹并将相关文件夹符号链接(symbolic link)到 webroot。仅更改版本号还不足以导致它发生!所以似乎与我创建的符号链接(symbolic link)有某种关系!

最佳答案

当符号链接(symbolic link)发生变化时,我遇到了同样的问题。看看https://bugs.php.net/bug.php?id=36555这也许就是您正在寻找的。

尝试(如该错误报告中所述)将 realpath_cache_size 设置为 0。

关于PHP 或 Apache 似乎正在缓存通过 file_get_contents 或 include 读取的文件(不需要的行为),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11616427/

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