Php 完全不允许浏览器缓存

Php 完全不允许浏览器缓存,php,caching,header,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 这是最好的吗?有人能想到其他安全层吗?在资源的url中添加时间戳: http://example.com/img.jpg?t=12234234 //ap

我想防止浏览器缓存某些文件(出于版权原因)。我知道您可以使用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

这是最好的吗?有人能想到其他安全层吗?

在资源的url中添加时间戳:

http://example.com/img.jpg?t=12234234 //append this in the server side
这愚弄了浏览器和服务器,让他们认为它每次都是一个新资源。只要确保每次的值都是不同的。这适用于任何资源(如果我错了,任何人都可以纠正我),如纯html、图像等

但是,无论资源是否已过期,它仍存储在缓存中。当资源过期时,浏览器所做的只是等待用户再次检查站点,重新下载资源并覆盖缓存中的现有资源。在用户这样做之前,它不会从缓存中删除这些内容


另一种防止缓存的方法是在连接中使用SSL。默认情况下,浏览器不缓存SSL的站点——除了额外的解密开销之外,这也是避免到处都使用SSL的主要原因之一。然而,一些浏览器仍然允许SSL缓存(据我所知,Firefox允许),并且仍然没有改变资源被发送到用户浏览器的事实——可以在调试器上拦截或查看


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

你在互联网上的网页上放的任何东西就像是在公开场合交出一百万美元——你无法阻止小偷观看,你可能不知道与你打交道的人是否也是小偷



避免你的图片被其他人拥有的唯一简单方法就是在上面放置一个大的水印

这种技术通常被称为“很高兴知道”,它有一个名称,也就是Joseph的响应,但这不是我想要的。即使向URL添加随机字符串,文件仍会被缓存。换句话说,用户仍然可以轻松地从缓存中获取文件并重新分发。我希望找到一个防弹的方法,首先不允许缓存。如果你因为这个原因阻止缓存,我们会告诉你你不能。拥有浏览器的整个想法是“从远程服务器获取资源”。换句话说,当您查看站点时,无论是否缓存该站点,图像仍将加载到浏览器中。您无法通过阻止缓存来阻止某人偷窃。防止窃取的一种方法是根本不加载该图像!此外,即使缓存过期,资源仍将保留在电脑中。只有找到新版本,浏览器才能覆盖资源。不能强制删除用户的缓存。