完全禁用浏览器缓存

时间:2012-02-23 09:33:08

标签: php caching header

我想阻止某些文件被浏览器缓存(出于版权原因)。我知道你可以使用PHP更改标题:

header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // Date in the past

这是不是很好?任何人都可以想到额外的安全层吗?

1 个答案:

答案 0 :(得分:1)

在资源的网址中添加时间戳:

http://example.com/img.jpg?t=12234234 //append this in the server side

这使得浏览器和服务器每次都认为它是一种新资源。确保每次都有不同的价值。这适用于任何资源(任何人纠正我,如果我错了),如普通的HTML,图像等。

Random Querystring to avoid IE caching

但是,无论资源是否已过期,资源仍会存储在缓存中。当资源到期时,所有浏览器都要等到用户再次检查站点,重新下载资源并覆盖缓存中的现有资源。在用户执行此操作之前,它不会从缓存中删除那些。


防止缓存的另一种方法是在连接中使用SSL。默认情况下,浏览器不会缓存SSL网站 - 除了额外的解密开销之外,其中一个主要原因是为什么可以避免整个地方的SSL。但是,有些浏览器仍然允许SSL缓存(据我所知,Firefox确实如此)并且仍然没有改变资源被发送到用户浏览器的事实 - 可以在调试器上拦截或查看。


上述所有方法都可以阻止缓存,但不会阻止任何人窃取您的图片。互联网的整个想法是从另一台计算机访问资源。据说,用户可以访问这些资源。到达浏览器的任何内容都取决于用户的意愿。他可能会查看它,查看源代码,在到达时拦截它,使用调试器查看。

你在互联网上放入网页的任何内容就像在公开场合交出一百万美元 - 你无法防止小偷看,你可能不知道你所处理的人是否也是小偷。 / p>


避免图像被其他人拥有的唯一万无一失的方法是在其上放置一个大水印!