none
Cache-Control="public" erzwingen RRS feed

  • Frage

  • Hallo liebe Gemeinde

    es ist mir gegenwärtig nicht möglich, einem HttpHandler eine korrekte Cache-Policy zu geben.

    Es existiert ein Http-Handler, der dynamisch erzeugtes CSS ausliefert. Hier es ist unbedingt erforderlich, das der gelieferte Inhalt des HttpHandlers vom Browser über einen größeren Zeitraum gecached wird.

    Folgenden Code habe ich hierzu verwendet:

    const int maxAge = 86400 * 7; // 7 Tage
    context.Response.Cache.SetExpires(DateTime.Now.AddSeconds(maxAge));
    context.Response.Cache.SetMaxAge(new TimeSpan(0, 0, maxAge));
    context.Response.Cache.SetCacheability(HttpCacheability.Public);
    context.Response.Cache.SetLastModified(DateTime.Now);
    context.Response.CacheControl = "public";
    context.Response.Cache.SetValidUntilExpires(true) ;


    Mittels FireBug habe ich aber festgestellt, das der gelieferte Inhalt nicht im Browser-Cache landet. Stattdessen wird der Code zur Erzeugung der Ausgabe stets neu generiert.

    Dabei ist mir aufgefallen, das stets der Header "Cache-Control=private" gesendet wird! Ich gehe gegenwärtig davon aus, das hierin das Problem liegt.

    Wie kann ich erreichen, das der IIS den Header "Cache-Control=public" ausliefert? Der obige Code scheint von ASP.NET oder dem IIS überschrieben zu werden.
    Im Usenet fand ich andere Leute mit dem gleichen Problem, leider ohne brauchbare Antworten.

    Als Entwicklungssystem wird ein Visual Studio 2008 auf Windows XP SP2 eingesetzt. Die Web-Application läuft auf dem IIS 5.1 (nicht dem eingebauten WebDev-Server).

    Vielleicht kann hier jemand helfen.

    Vielen Dank im Voraus, sigmundj
    Mittwoch, 8. Juli 2009 14:46

Antworten

Alle Antworten