我设计了一个使用简单缓存机制的样式表/javascript 文件捆绑器和压缩器。它只是将每个捆绑文件的时间戳写入文件并比较这些时间戳以防止再次重写“主文件”。这样,在修改了 CSS 或 JS 文件的应用程序更新(这里是我的网站)之后,单个请求只会再次触发一次缓存。然后,此请求以及所有其他请求将看到一个已编译的文件,例如 master.css?v=1234567。
问题是,在我的开发环境下,每个测试都通过了,集成效果很好,一切都按预期工作。但是,在我的暂存环境中,在使用 FastCGI 编译的 PHP5.3 的服务器上,我的缓存文件似乎会被无效数据重写,但只有在同一个浏览器没有请求时才会如此。
用例:
- 我在 Linux 下的 Firefox 上提出了第一个请求。对于该浏览器上的所有其他请求,一切都按预期工作。
- 一旦我在 Windows/Linux(IE7、IE8、Chrome 等)上发出请求,我的缓存文件就会获得无效数据,但仅限于在 FastCGI 下运行的暂存服务器上,而不是在开发中!
- 在 Firefox 上运行另一个请求会正确地重新缓存文件。
然后我想知道,FastCGI 与它有什么关系吗?我认为浏览器的客户端甚至操作系统与服务器端代码没有任何关系。
我知道这个问题是抽象地描述的,但是粘贴任何具体的代码都会太重 IMO,但如果它可以解决我的问题,我会这样做。
我尝试过远程调试我的代码,发现一切仍在按预期工作,即使缓存文件被正确写入。我看到当错误发生时,文件被写入预期的数据,但在两秒后被无效数据重写 - 在 php 完成执行之后! -
有没有办法通过 PHP 函数禁用特定请求的 FastCGI 缓存?