2014-03-05 33 views
0

我使用Nancy構建了一個web應用程序,並使用我自己的自定義類與Nancy向瀏覽器提供靜態內容。爲什麼瀏覽器多次下載客戶端模板生成的圖片?

當我運行一個演示(code here),並點擊其中的鏈接,回用客戶端模板從頁面中刪除圖像,然後渲染同一幅圖像上,我看到瀏覽器做了圖像的請求每次點擊後。

這裏是我的鏈接上多次點擊後鍍鉻devtools我的網絡請求的畫面呈現模板與圖像:

Network tools information from my broken app

我想到的是,圖像也不會被再次從服務器下載。當我使用默認的Nancy應用程序或不是.NET-y的應用程序運行這個簡單的Web應用程序時,我只能看到一個圖像請求。我試過了一個南希的標準靜態內容提供商,一個golang file server,http-server,isaacs st。他們都這樣的表現:

Network tools from golang standard file server

我想我有我的到期或搞砸了高速緩存相關的頭,但我不知道。標題(here's the diff between the headers from the default Nancy implementation and my code as a gist)不會顯示我正在採取的任何操作。

我有很多問題:

  1. 發生了什麼事在使圖像再次下載該瀏覽器?
  2. 我該如何改進使用我的devtools來找出是什麼導致圖像被瀏覽器再次下載?
  3. 如果你想進入它,我的自定義實現有什麼問題?

我目前看到的Chrome版本33.0.1750.146 m該行爲在Windows 7

回答

0

您是否嘗試過緩存無效?將一個唯一的字符串(如GUID)附加到URL通常會起到訣竅的作用。例如:/Content/face.png?v=7c1f4f57f2aa4cf9b707664fb0bd7a05

編輯:一個錯字

+0

嘿!我沒有嘗試緩存破壞,但我*不想再次下載圖像*。我只是覺得應該下載一次。我編輯了我的問題,以澄清我在找什麼(我不認爲我原來很清楚) – jrsconfitto

+0

當你在DOM中創建一個新的img元素,就像Hogan模板所做的那樣,瀏覽器不會在乎它呈現之前,它會對其進行無意識處理。靜態內容緩存(如圖像)必須由服務器進行控制,而不是在應用程序內進行控制。 –

+0

我同意,我認爲我的靜態內容緩存的實現有一個問題,但我不知道是什麼。我的請求/響應與我看到的其他實現看起來沒有太大的區別。 – jrsconfitto

相關問題