Je crée dynamiquement des fichiers javascript sur le serveur contenant des chaînes traduites. Lorsque je regarde l'inspecteur de chrome, ce fichier n'est jamais mis en cache (les autres fichiers JS réels qui se trouvent dans le dossier Scripts sont mis en cache) * Pourquoi n'est-ce pas? *Le fichier JS en chrome n'est jamais mis en cache
<script src="somepath/Scripts/translate-nl-BE.js"></script>
or
<script src="somepath/Scripts/translate-en-GB.js"></script>
ceci est mis en correspondance avec l'action MVC suivante:
[HttpGet]
public ActionResult TranslateJS(string culturecode) {
ViewBag.JSCulture = culturecode;
Response.ContentType = "text/javascript";
return PartialView("TranslateJS");
}
est ici le point de vue:
<%@ 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)) %>;
ce essentiellement sérialise juste un tableau de JSON (Je sais que cela semble dirtyer que juste renvoyer un jsonresult mais je ne peux pas ajax appelez ce fichier, il faut être lié dans une étiquette de script
C'est la réponse que je reçois du serveur:
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
est ici un aperçu du fichier get retourné: il est fondamentalement juste un dictionnaire de valeur clé des traductions.
var translations = {"vertaald":"Vertaald","gerelateerd":"Gerelateerd","details":"Details"};
combien de temps voulez-vous mettre en cache pour? Cela va-t-il changer souvent? – Liam
En ce qui concerne le navigateur, ce fichier ne changera jamais, donc devrait être mis en cache pour toujours, mais je pourrais me contenter d'une exipration quotidienne/hebdomadaire –