【问题标题】:Remove cache for one particular page using PHP使用 PHP 删除一个特定页面的缓存
【发布时间】:2011-04-05 06:01:01
【问题描述】:

我在我的网页中使用 Flowplayer。视频结束后,我切换到另一个视频并重新启动播放器。如果我删除第一个视频并在播放第一个视频的同时上传第二个视频,则会出现我的问题。如果我清除浏览器缓存并重新启动播放器,它会播放最后上传的文件。请指导一下:有没有其他方法可以清除特定页面的缓存,或者重启Flowplayer缓存?

【问题讨论】:

  • 第一个结束时如何更改视频?
  • 通过 FTP 我删除第一个视频,然后在给定路径上传第二个视频
  • Meena,确保两个视频具有不同的文件名,并相应地更改播放器的参数。

标签: php webpage flowplayer browser-cache


【解决方案1】:

确保每个视频都有自己的 URL,并使用此调用确保页面本身没有被缓存:

header('Expires: Thu, 19 Nov 1981 08:52:00 GMT');
header('Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0');
header('Pragma: no-cache');

【讨论】:

  • @Emil Vikström:手册没有。但有一些提示:首先,名称中有“会话”。第二:“缓存限制器在请求启动时被重置为存储在 session.cache_limiter 中的默认值。因此,您需要为每个请求调用 session_cache_limiter()(在调用 session_start() 之前)。”最后,您可以查找source code of that function in session.c at line 1701。它所做的只是为运行时设置 session.cache_limiter
  • @Emil Vikström:是session_start最终设置了相应的标头字段。
  • 第一个和第二个显然无关紧要,因为它们只告诉哪个模块处理它。不过,您的第三个论点似乎是正确的,因此我是正确的。奇怪的是,他们甚至没有在手册的示例中使用 session_start。
  • @Emil Vikström:另一种方法是在不调用 session_cache_limiter 和调用 session_cache_limiter 的情况下观察 HTTP 响应。您将看到,除非启动会话,否则您是否调用 session_cache_limiter 没有区别。
【解决方案2】:

在你的代码中添加这两行,在你的应用程序顶部的某个地方

header('Cache-Control: no-cache, must-revalidate');
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
// this date can be set somewhere in the past

【讨论】:

    猜你喜欢
    • 2015-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多