offline Web Apps mit ASP.net

Seit mindestens 2010 besteht im HTML Standard eine Option Web Seiten Offline zu betreiben. Das bedeutet, wenn keine Internet Verbindung besteht. Zwar konnten Browser auch bisher in einem Offline Mode gecachte Websites darstellen, nun soll dieser Offline Application Cache echte Webanwendungen mit Daten und co möglich machen. Soweit meine Recherchen reichen nutzt dies aktuell GMail.

Zunächst braucht die Website eine Manifest Datei. Wie diese benannt wird, ist Ihrer Fantasie überlassen. Die erste Zeile allerdings nicht. Wie sich das Cache Manifest zusammensetzt findet sich vielfach im Web.

   1:  CACHE MANIFEST
   2:   
   3:  CACHE:
   4:  default.aspx
   5:  htmlpage.html
   6:   
   7:  FALLBACK:
   8:  on.png off.png
   9:   
  10:  NETWORK:

Hier soll hauptsächlich auf die Tücken im Microsoft Umfeld eingegangen werden.

Da wäre zunächst der geforderte Mime Type. Wenn dieser falsch ist, funktioniert das Caching nicht. In meinem Beispiel habe ich die Dateierweiterung appcache verwendet. Seien Sie vorsichtig mit der Erweiterung .Manifest, diese ist in der Regel im IIS schon registriert, mit einem abweichenden Type.

   1:   <system.webServer>
   2:      <staticContent>
   3:        <mimeMap fileExtension=".appcache" mimeType="text/cache-manifest"/>
   4:      </staticContent>
   5:    </system.webServer>

Testen Sie am besten den direkten Aufruf im Fiddler um den Content-Type Eintrag im HTTP Header zu prüfen. Nicht jeder Webserver kann das, der ASP.NET Web Dev Server verweigert sich bei mir diesbezüglich. Ich verwende IIS Express.

image

In der HTML Page (hier eine statische und eine dynamische) wird das Manifest im HTML Element referenziert.

   1:  <!DOCTYPE html>
   2:  <html manifest="offline.appcache">
   3:  <head>
   4:      <title></title>
   5:         <meta http-equiv="X-UA-Compatible" content="IE=edge">
   6:    
   7:  </head>
   8:  <body>
   9:      hallo Welt  <img src="on.png" />

In der aspx Version habe ich noch eine Uhrzeit Ausgabe mit Response Write eingebaut. Ist zwar ein wenig wiedersprüchlich eine Dynamische Server Page am Client zu Cachen und dann offline zu betreiben, aber es tut.

Für meinen Test verwende ich Internet Explorer und Chrome. Letzter zeigt mir per F12 sehr gut an, was er gecacht hat.

image

Im nächsten Schritt wird der IIS Express gestoppt und beide Webseiten in beiden Browsern nochmal aufgerufen.

image

image

Das klappt ja ganz gut. Beim Internet Explorer 10 treten allerdings bei mir seltsame Effekte auf. Wenn man den Browser schließt oder STRG F5 drückt, erscheint fälschlicherweise das Online Icon.

image

Jetzt muss man sich nur noch fragen, warum es auch nach drei Jahren keine  bzw. kaum HTML 5 Offline Anwendungen gibt. Das muss doch Gründe haben.

Der Entwicklungsaufwand ist sehr hoch, die Browser verhalten sich nicht konsistent. Es gibt mal 5 mal 10 MB Beschränkung im Betriebsystem. Letztendlich ist der Funktionsumfang verglichen mit einer Desktop Anwendung (ja und auch Silverlight) gerade zu lächerlich.

Kommentare sind geschlossen