2017-04-13 26 views
1

我保存在我的數據庫我的圖片,並用下面的代碼MVC DATABSE圖像的arent被緩存

var base64 = Convert.ToBase64String(image.Content); 
var imgSrc = String.Format("data:image/gif;base64,{0}", base64); 

<div class="img"> 
    <a><img src="@imgSrc"></a> 
</div> 

問題是獲取他們,我每次刷新頁面時,他們正在重新下載。我如何將它們存儲在緩存中? 感謝

+2

如果使用[OutputCacheAttribute](https://msdn.microsoft.com/en-us/library/system.web.mvc.outputcacheattribute(v = vs.118).aspx)標記動作,並提供持續時間緩存響應,然後瀏覽器將緩存您的視圖內容。 – mmushtaq

回答

0
<staticContent> 
<clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="365:00:00" /> 
</staticContent> 

添加在Web.config文件中這一行裏面system.webServer靜態內容緩存,並在行動中使用ETag過濾器。

希望這個緩存過程會幫助你。

1

Base64的圖像不能由客戶機瀏覽器緩存作爲圖像數據本身在src包埋,不同於資源可經由HTTP請求來請求。

方案A( 「正常」 的形象):

  1. 加載在瀏覽器的頁面
  2. 瀏覽器讀取到的圖像標籤,並請求@ 「SRC」 檢索資源
  3. 網站服務器響應請求通過提供資源
  4. 瀏覽器渲染圖像

方案B的(Base64圖像):

  1. 加載在瀏覽器的頁面
  2. 瀏覽器讀取到的圖像標籤,並因爲BASE64 數據已經描述圖像應該怎麼樣子,瀏覽器高興地使其而無需再次向Web服務器發送請求。

友情提示:您可以嘗試通過保存頁面,然後用鼠標右鍵單擊「另存爲...」,並觀察輸出。在另一個文件夾中,base64圖像嵌入在html中,如數據本身,但不作爲資源

P/S:@ mmushtaq提到的緩存方法是服務器端緩存,如果您通過ActionResult重試base64數據image.Content可能會很有用。