我在服務器上動態創建包含已翻譯字符串的JavaScript文件。 當我看着Chrome檢查器時,這個文件永遠不會被緩存,(Scripts文件夾中的其他實際JS文件也會被緩存) * 爲什麼不是這樣? *Chrome中的JS文件永遠不會被緩存
<script src="somepath/Scripts/translate-nl-BE.js"></script>
or
<script src="somepath/Scripts/translate-en-GB.js"></script>
這是映射到以下MVC行動:
[HttpGet]
public ActionResult TranslateJS(string culturecode) {
ViewBag.JSCulture = culturecode;
Response.ContentType = "text/javascript";
return PartialView("TranslateJS");
}
這裏的觀點:
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<dynamic>" %>
<%
string culturecode = ViewBag.JSCulture;
%>
var translations = <%=new System.Web.Script.Serialization.JavaScriptSerializer().Serialize((ViewBag.Translate as List<ERPManager.TranslationService.FlatTranslation>).Where(x=>x.CultureCode==culturecode).ToDictionary(t=>t.Key,f=>f.Value)) %>;
這基本上只是序列化JSON數組(我知道這看起來比dirtyer只是返回一個jsonresult,但我不能ajax調用這個文件,它需要鏈接到腳本標記
這是我從服務器獲得響應:
Cache-Control:private
Content-Length:10987
Content-Type:text/javascript; charset=utf-8
Date:Thu, 04 Apr 2013 10:15:11 GMT
Server:Microsoft-IIS/7.5
X-AspNet-Version:4.0.30319
X-AspNetMvc-Version:3.0
X-Powered-By:ASP.NET
這裏所返回的獲取文件的預覽:它基本上只是翻譯的鍵值字典。
var translations = {"vertaald":"Vertaald","gerelateerd":"Gerelateerd","details":"Details"};
你想讓它緩存多久?這種改變會經常發生嗎 – Liam 2013-04-04 10:36:30
就瀏覽器而言,這個文件永遠不會改變,所以應該永遠緩存,但我可以解決每日/每週exipration – 2013-04-04 10:39:31