2009-08-03 17 views
0

Mit der folgenden Funktion speichere ich js, css Datei im Browser.Dateien im Browser zwischenspeichern

Wie weise möchte ich das Bild im Browser cahe.

Ich hatte versucht, die unten ein, um das Bild zu cachen. Aber es zeigte das Bild nicht.

private static void CacheOrFetchImageFileFromServer(string relativePath, string absolutePath, HttpContext context) 
{ 
    string extension = System.IO.Path.GetExtension(relativePath); 
    if (extension.ToUpper() == ".JPG" || extension.ToUpper() == ".PNG" || extension.ToUpper() == ".GIF" || extension.ToUpper() == ".TIFF") 
    { 
     Cache cache = HttpRuntime.Cache; 
     System.Drawing.Image imgPhoto = null; 
     if (cache[relativePath] == null) 
     { 
      Encoding encoding = Encoding.GetEncoding(DefaultEncodingCodePage); 
      CacheDependency dependency = new CacheDependency(absolutePath); 

      FileStream fs = File.OpenRead(absolutePath); 
      byte[] data = new byte[fs.Length]; 
      fs.Read(data, 0, data.Length); 

      MemoryStream ms = new MemoryStream(data); 
      Bitmap bmp = new Bitmap(ms); 

      imgPhoto = System.Drawing.Image.FromFile(absolutePath); 
      cache.Insert(relativePath, bmp, dependency); 
     } 
     else 
     { 
      imgPhoto = (Image) cache[relativePath]; 
     } 

     context.Response.Write(absolutePath); 


     //using (StreamWriter sw = new StreamWriter(context.Response.OutputStream)) 
     //{ 
     // sw.Write(absolutePath); 
     //} 
    } 
} 

Antwort

2

Ich bin mir nicht sicher, ich verstehe, was Sie hier tun.
Zunächst wird das Cache Objekt in asp.net verwendet, um Daten auf der Serverseite zu cachen, nicht auf der Clientseite (Browser).
Caching von Dateien, speziell CSS, JavaScript und Bilder, erfolgt automatisch vom Browser, Sie müssen das nicht für jede Datei manuell machen. Und selbst wenn Sie dies manuell tun müssten, ist dies nicht der Fall - es sieht so aus, als ob Sie nur eine Kopie der Datei im Cache des Servers erstellen (ich habe keine Tests gemacht, aber ich vertraue Microsoft und nehme an, dass dies der Fall ist) schon irgendwie gemacht, und dein Weg ist eigentlich langsamer).
Wenn Sie die clientseitige Zwischenspeicherung besser steuern möchten, können Sie den Ablauf von Inhalten auf dem IIS aktivieren.

Verwandte Themen