2012-07-23 69 views
0

可能是一個普遍的問題,即使是'它是特定於某種類型的網站/應用程序,但會給它一個鏡頭,無論。我有點困惑,不管我現在的項目應該緩存我的縮略圖,通常我會,但我不確定這個項目。我會更好地解釋我的情況,以便更好地理解。要緩存或不緩存 - 圖庫照片網站

我有一個股票照片網站,爲名人,新聞和體育照片,顯示授權客戶(報紙&雜誌)我們整個圖書館。這些照片有一定的價值,我採取了很多措施,以確保較大的照片隱藏在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); 
?> 
+0

你的意思是*瀏覽器*緩存?或緩存大拇指生成的服務器端? – Hamish 2012-07-23 02:31:54

+0

@Hamish:服務器端,當我從亞馬遜拉圖像並打印到屏幕(loadImage.php)時,我可以添加緩存標題。目前,對於縮略圖,我沒有提供緩存頭。這是我所質疑的。 – TheCarver 2012-07-23 02:37:07

+2

緩存*標題*用於客戶端,而不是服務器。 – Hamish 2012-07-23 02:38:24

回答

2

如果你非常在意的圖像的安全性,那麼我會說是不使用更多的帶寬(的費用和較慢的加載緩存它們時間)。如果您比帶寬使用更關心安全性,請緩存它們。

但是,如果他們是真正的縮略圖,他們應該有什麼價值給用戶,如果他們是小,質量低,等一個解決辦法是水印圖像。

從理論上講,可以從瀏覽器的緩存(http://protechgeek.com/how-to-extract-images-from-browser-cache/)提取圖像,因此,如果它們被緩存,它們可以被檢索到。更容易,有人可以像你所說的那樣進行屏幕抓取,或者右鍵單擊並複製/粘貼。水印是唯一的解決方案。

TL;博士

在我看來,我不認爲這是值得的額外帶寬擊中,增加加載時間最小安全增長。改用水印。還有一個原因是,大多數股票照片網站的使用watermarks--他們是防止有人明目張膽地盜竊圖像的唯一途徑(儘管,根據圖像和水印,它可以令人信服地由熟練的Photoshop用戶刪除)

+0

唯一的方法是抓屏,我有一個透明的圖像覆蓋照片,所以右鍵單擊抓取blank.png文件。我認爲我更喜歡速度超過安全性,帶寬對我們來說不是問題。我應該給每張照片多久到期? – TheCarver 2012-07-23 02:53:43

+0

確定的用戶使用Web檢查器刪除透明PNG非常容易。緩存時間取決於你的用戶將採取什麼樣的行爲 - 雖然我不是緩存方面的專家,但是其他人可能想要在這方面做出貢獻。 – 2012-07-23 02:55:38

+2

@PaparazzoKid - 爲什麼不五分鐘?三?因爲,你知道,你似乎有一個真正的問題,那就是某人可以下載足夠高的圖像資源副本*作爲資源*。給任何能夠勝任DOM遍歷15秒的人,他們會有你的源文件;給那些同樣的人一個小時左右,他們可以在瀏覽器中運行一個腳本(Chrome擴展?),它只會下載你的圖像。腳本下降的副本,水印作爲預覽,保存併爲您的用戶提供一個真實的緩存時間。然後爲您的用戶提供訪問更高分辨率付款的功能。 – 2012-07-23 02:59:55