【问题标题】:Is it possible to disable browser caching with code?是否可以使用代码禁用浏览器缓存?
【发布时间】:2013-08-18 02:10:22
【问题描述】:

我知道还有其他关于禁用缓存的帖子。我已经阅读了所有我能找到的内容,但仍然有问题,所以请善待我,不要因为我开始新帖子而踢我。

这是交易,我正在开发一个房东可以用来列出其所有房产的网站。这有点像房地产经纪人会使用的基于 MLS 的网站。

我遇到的问题对我来说不是问题,但对于我的客户来说,它不是很聪明(我可以说,她是家庭成员)。设置属性并上传所有各种图片后,可以选择编辑任何数据以及删除任何现有图片。如果您删除图片,一切正常,但浏览器缓存使其看起来好像什么也没发生。按 F5(在 Firefox 中)刷新页面,一切看起来都应该如此。

问题与我如何选择为上传的照片命名有关。使用附加图片编号的属性地址信息对照片进行重命名。例如:3505Cardinalpic1.jpg、3505Cardinalpic2.jpg、3505Cardinalpic3.jpg等。如果我要删除第一个,例如下面的图片重命名以保持命名顺序不变。例如,它们将来自 3505Cardinalpic1.jpg 和 3505Cardinalpic2.jpg。两张幸存的图片都是来自预先存在的 3 序列的第 2 和第 3 张图片。

当删除一张图片后页面重新加载时,它从缓存中加载图片,因为文件名没有改变,只有源文件本身。

我认为我可以通过重写处理图片的 php 来解决此问题,以便文件名附加时间戳或使每个名称仍然可识别但唯一的东西,但我想确保没有更简单的方法在我去那里做一些有效的事情之前这样做。

我故意不发布代码,因为我认为这不是代码问题,而且问题描述已经足够长了。如果您想查看我的代码的一部分,请询问。

我试过这个没有运气:
test php disabled caching

我尝试在我的 url 上附加时间戳以使其独一无二,但这也无济于事。

提前感谢您的任何建议。

【问题讨论】:

  • 为什么要重写现有的文件名?强制浏览器总是重新加载每个图像(没有缓存)并不是一个好习惯。最好的情况是让浏览器不缓存,然后对应用程序性能的感知就不会很好。
  • 使用 php 的 readfile() 加载图像。在那里你可以使用 php headers 来防止缓存
  • 我相信您可以为特定站点禁用客户端计算机上的缓存。
  • 我并不担心性能,因为它只会影响站点管理端的这一页。老实说,我不久前写了 php 来处理照片,如果我再做一次,我现在会做不同的事情。听起来我可能会朝着那个方向前进。我是自学成才的,考虑到我必须处理的事情,我认为我做得很好。
  • 以下建议有效,我将其标记为已接受的答案。感谢您的建议。我保证会回去重新编码我的问题的根源,而不是长期依赖这个创可贴。

标签: php browser-cache


【解决方案1】:

要强制浏览器不缓存文件,请将其与更改参数链接。如果你这样做:

<img src="3505Cardinalpic2.jpg?001"/>

就在这之后

<img src="3505Cardinalpic2.jpg?002"/>

浏览器将重新加载图像,因为他不确定这是否相同。如果你不想缓存,你可以把时间戳作为参数。

但是禁用缓存不好,所以也许只有当你的相册有修改时才能更改值?

【讨论】:

  • 这很有趣。我会试一试。谢谢。我知道我需要回去解决问题的根源并计划这样做,我现在没有太多时间深入研究这个问题
  • 那行得通。感谢您的快速和开箱即用的响应。
猜你喜欢
  • 1970-01-01
  • 2012-03-01
  • 1970-01-01
  • 2012-01-05
  • 2018-08-30
  • 1970-01-01
  • 2015-11-06
  • 1970-01-01
相关资源
最近更新 更多