2012-02-23 135 views
0

我想阻止瀏覽器緩存某些文件(出於版權原因)。我知道你可以使用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

將在資源的URL時間戳:

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

這個傻瓜瀏覽器和服務器認爲它是一個新的資源每次。只要確保每次的價值都不一樣。這適用於任何資源(人糾正我,如果我錯了)像普通的HTML,圖像等

Random Querystring to avoid IE caching

但是,資源仍保存在緩存中,無論它是否已過期。當資源到期時,所有瀏覽器都會等待用戶再次檢查站點,重新下載資源並覆蓋緩存中現有的資源。直到用戶這樣做,它不會從緩存中刪除。


防止緩存的另一種方法是在您的連接中使用SSL。默認情況下,瀏覽器不會緩存SSL'ed站點 - 除了解密的額外開銷之外,還有一個主要原因,即爲什麼避免使用SSL。然而,仍然有些瀏覽器允許SSL緩存(據我所知,Firefox可以)並且仍然不會改變資源被髮送到用戶瀏覽器的事實 - 可以在調試器上攔截或查看資源。


以上所有方法都可以防止緩存,但不會阻止任何人竊取您的圖像。互聯網的整個想法是從另一臺計算機訪問資源。據說,用戶有權訪問這些資源。任何到達瀏覽器的內容都受到用戶意願的限制。他可以看看它,查看源代碼,在到達時攔截它,使用調試器進行查看。

你在互聯網上放置的任何東西就像是在公開場合交出了一百萬美元 - 你無法阻止盜賊看守,你可能不知道你所處理的人是否也是小偷。


避免你被其他人擁有的圖像的唯一傻瓜式的方法是在它上面放置一個大水印!

+1

該技術通常被稱爲[緩存破壞](http://html5boilerplate.com/docs/Version-Control-with-Cachebusting/) – AD7six 2012-02-23 09:48:07

+0

很高興知道它有一個名稱也 – Joseph 2012-02-23 09:57:58

+0

感謝您的答覆約瑟夫,但這不是我想要的。即使您將隨機字符串添加到URL中,該文件仍然被緩存。換句話說,用戶仍然可以輕鬆地從緩存中抓取文件並重新分配。我希望找到一個不讓高速緩存擺在首位的防彈方法。 – 2012-02-27 17:30:59