PHP中如何实现这个缓存控制策略呢?

发布于 2024-08-31 15:17:26 字数 113 浏览 0 评论 0原文

仅当文件自上次访问以来发生更改时才提供新内容。

我该如何实施?

更新

抱歉前面没有提到,请求的资源是直接请求的网页,而不是图像。

Serve the new content only if the file has changed since last visit.

How do I implement that?

UPDATE

Sorry not to mention it earlier,but the requested resource is web page which is requested directly,not an image.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

横笛休吹塞上声 2024-09-07 15:17:26

您可以使用从 Rails 借用的技巧,并将上次文件修改时间附加到包含内容中:

$fileName = 'image.jpg';
$httpLink = $fileName . '?' . filemtime( $fileName );
echo '<img src="', $fileName, '" alt="blah" />';

这将输出类似的链接

<img src="image.jpg?1002412" alt="blah" />   

然后,当文件更改时,查询字符串也会更改,浏览器将请求“新”文件,

<img src="image.jpg?1003622" alt="blah" />

即可以保留文件修订的本地日志,并从数据库而不是文件系统读取修订号,这可能会稍微快一些(并保存文件系统读取,尽管没有显着差异 - 取决于数据库与 Web 服务器负载)。

You can use a trick borrowed from rails and append the last file modification time to the include:

$fileName = 'image.jpg';
$httpLink = $fileName . '?' . filemtime( $fileName );
echo '<img src="', $fileName, '" alt="blah" />';

This will output a link like

<img src="image.jpg?1002412" alt="blah" />   

Then when the file changes, the query string will also change and the browser will request the "new" file i.e.

<img src="image.jpg?1003622" alt="blah" />

Alternatively you could keep a local log of file revisions and read the revision number from a database rather than the filesystem, which may be marginally faster (and save filesystem reads, although it's not significant difference - dependant on db vs web server load).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文