Laden...

[gelöst][ASP.NET /Javascript] Javascript serverseitig dynamisch erstellt, wird im browser gecached

Erstellt von Birne vor 13 Jahren Letzter Beitrag vor 13 Jahren 1.474 Views
B
Birne Themenstarter:in
67 Beiträge seit 2009
vor 13 Jahren
[gelöst][ASP.NET /Javascript] Javascript serverseitig dynamisch erstellt, wird im browser gecached

Hallo Community,

ich habe ein Problem bzgl. Javascript Caching im Browser.

Das Szenario sieht wie folgt aus:

  • Ich füge im ServerCode meiner Seite via Page.ClientScript.RegisterClientScriptBlock ein dynamisch erzeugtes Javascript hinzu.

  • Leider wird das Javascript im Browser gecached und bisher habe ich keine Möglichkeit gefunden dass Javascript nicht cachen zu lassen oder es aus dem Browsercache zu** löschen**.

_
Welche Möglichkeiten gibt es, das Caching für dieses eine Script zu verhindern oder aber das Script aus dem Browsercache zu löschen ?

Ich hoffe ihr wisst Rat.
Vielen Dank !

Birne

799 Beiträge seit 2007
vor 13 Jahren

Hast du schon probiert generell das Caching abzudrehen? (Siehe z.B. hier)

Die andere Frage: Was tut dein Skript dass du es Server seitig generierst und nicht z.B. auf Page-Methods oder ähnliches setzt?

As a man thinketh in his heart, so he is.

  • Jun Fan
    Es gibt nichts Gutes, außer man tut es.
  • Erich Kästner
    Krawutzi-Kaputzi
  • Kasperl
16.806 Beiträge seit 2008
vor 13 Jahren

Als allererstes: JavaScript sollte gecached werden. Das ist ein ganz normales und gewolltes Verhalten in Browsern.
Auch wenn Du serverseitiges Cachen versuchst zu deaktivieren, kann / wird das der Client unter bestimmten Vorraussetzungen ignorieren.

Es gibt zwar "Hacks" zB via "dynamische js-Url" (die Parameter ändern sich bei jedem Aufruf, zB Uhrzeit als long)

 <script src="myscript.js?874324876324" type="text/javascript"></script>

es ist aber kein sichergestelltes Verhalten. Es gibt hierfür auch kein prinzipielles How-to.

B
Birne Themenstarter:in
67 Beiträge seit 2009
vor 13 Jahren

Hast du schon probiert generell das Caching abzudrehen? (Siehe z.B.
>
)

Habe ich probiert, funktioniert im IE leider nicht :I

Die andere Frage: Was tut dein Skript dass du es Server seitig generierst und nicht z.B. auf Page-Methods oder ähnliches setzt?

Das javascript gleicht ein defizit des Ajax Toolkit Controls "CalendarExtender" aus. Dieser lässt sich nicht mit einem Datum vorbelegen ohne dass die zugehörige Textbox den Inhalt auch ändert.

Ich hänge mich also in das "OnClienShowing" Event des Calendars und ändere das angezeigte Datum.

Das Datum ist Resultat Serverseitiger Berechnungen, weshalb ich das Script auch nicht in eine Datei auslagern kann.

16.806 Beiträge seit 2008
vor 13 Jahren

AJAX Toolkit ist ein gestorbenes Produkt von Microsoft, das ansich mich Ajax nich viel am Hut hat.
Laut Beispielen kann man dem Calendar mit SelectedDate aber ein Datum vorgeben.

B
Birne Themenstarter:in
67 Beiträge seit 2009
vor 13 Jahren

AJAX Toolkit ist ein gestorbenes Produkt von Microsoft, das ansich mich Ajax nich viel am Hut hat.
Laut
>
kann man dem Calendar mit SelectedDate aber ein Datum vorgeben.

Dann ändert dies aber auch die Textbox and welche der Calendar attached ist.

Ich kann das Toolkit auch nicht neu compilen, weil mir der source code zu meienr hier eingesetzten version fehlt.

Die neue Version läuft auch mit sharepoint nicht mehr.

16.806 Beiträge seit 2008
vor 13 Jahren

Microsoft hat AJAX aus dem aktiven Portfolio genommen, da einfach jQuery deutlich flexibler ist. MVC (aktuell in Version 3) supportet jQuery auch aktiv, sowie Sharepoint.
Wenn Du an einer Neuentwicklung arbeitest ist der Umstieg auf MVC sicherlich eine lohnende Investition. AJAX und "Classic ASP" sind halt einfach in gewisser Hinsicht tot. Das neue Sharepoint basiert auch auf MVC.

B
Birne Themenstarter:in
67 Beiträge seit 2009
vor 13 Jahren

Microsoft hat AJAX aus dem aktiven Portfolio genommen, da einfach jQuery deutlich flexibler ist. MVC (aktuell in Version 3) supportet jQuery auch aktiv, sowie Sharepoint.
Wenn Du an einer Neuentwicklung arbeitest ist der Umstieg auf MVC sicherlich eine lohnende Investition. AJAX und "Classic ASP" sind halt einfach in gewisser Hinsicht tot. Das neue Sharepoint basiert auch auf MVC.

Das Projekt lässt sich im aktuellen Status jetzt nicht mehr umschwenken auf MVC.
Ich habe jetzt ne quick&dirty solution gewählt und pushe das Datum als Value von der CodeBehind zurück.

Somit muss das jscript nicht mehr dynamisch erzeugt werden und es kann gecached werden.