缓存或不缓存 - 股票照片网站

时间:2012-07-23 02:25:42

标签: php caching photo-gallery

可能是一个普遍的问题,即使它是特定于某种类型的网站/应用程序,但无论如何都会给它一个机会。我有点困惑或不知道我应该为我当前的项目缓存我的缩略图,通常我会,但我不确定这个项目。我会更好地解释我的情况,以便更好地理解。

我有一个股票照片网站,用于显示我们整个图书馆的授权客户(报纸和杂志)的名人,新闻和体育照片。这些照片有一定的价值,我已经采取了很大的措施来确保更大的照片要么隐藏在Amazon S3上,要么隐藏在根目录之上,带有过期和散列的链接,所以我不想通过添加缓存来危害我的照片当我不应该或添加不正确的缓存。典型的用户可能会搜索照片而不会再次看到它,或者他们可能会将照片保存到他们的收藏夹并每天看两次。用户还可以在几分钟内浏览10,000张照片。

我的问题是;我应该没有缓存或缓存有限,比如1小时或1天?如果我为照片设置了缓存过期,我的客户端是否可以在浏览器上访问“缓存图像”?缓存有价值的照片还有其他安全问题吗?

我知道屏幕抓取,打印和规则;如果你不想让它被盗,不要把它放在网上,但我想在我的应用程序中尽我所能提高安全性和速度。

我正在使用PHP(5.2.17)使用PHP的ReadFile()和IMG元素(如<img src="loadImage.php?p=2342dfsfsdfwf2dfsf">)将图像从亚马逊加载到我的客户端浏览器。

澄清什么类型的缓存:

<?php
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT");
header("Content-Type: image/jpeg");
readfile($url);
?>

1 个答案:

答案 0 :(得分:2)

如果您非常关心图像的安全性,那么我会说不要以使用更多带宽(以及更慢的加载时间)为代价来缓存它们。如果您更关心带宽使用而不是安全性,请缓存它们。

然而,如果它们是真正的缩略图,如果用户体积小,质量低等,它们应该对用户没有什么价值。一种解决方案是为图像添加水印。

理论上,可以从浏览器的缓存(http://protechgeek.com/how-to-extract-images-from-browser-cache/)中提取图像,因此如果缓存它们,则可以检索它们。更容易,有人可以像你提到的那样屏幕抓取,或者右击并复制/粘贴。水印是解决这个问题的唯一方法。

<强> TL;博士

在我看来,我认为值得额外的带宽命中和增加的加载时间以实现最小的安全性增加。请改用水印。有一个原因是大多数照片网站都使用水印 - 它们是阻止某人直接窃取图像的唯一方法(即使根据图像和水印,它可以被熟练的Photoshop用户令人信服地删除)< / p>