Kategorien
Code Webentwicklung

Warum Appcache eine ziemlich unpraktische Sache ist – Ein Review für meine Einkaufliste

picjumbo.com_IMG_1166

Ich baue gerade an einer App für eine Einkaufsliste. Mehr so zum Spaß und um Angular.JS zu lernen – dachte ich anfangs.

Okay, zum Spaß baue ich immer noch daran, aber jetzt lerne ich noch mehr als nur Angular.JS. Technisch bestand die erste veröffentlichte Version aus 104 Zeilen JavaScript (plus Templates) und 74 Zeilen PHP, die mittels einer Switch-Anweisung auf einer csv-Datei rumrödelten.

Alpha-und Beta-Testerin war und ist immer noch meine wunderbare Frau, die mich überhaupt erst auf die Idee gebracht hatte. Ihre erste Aussage beim Test der ersten Version war: “Das ist ja einfach!” Und das soll es auch weiterhin bleiben.

Die ersten Feature-Requests waren einfach:

  1. Hinweis, wenn man plötzlich offline ist
  2. Icon auf dem Homescreen
  3. Sinnvoller Einsatz bzw. Deaktivierung von Autocomplete-Features des Browsers

Dann hatte ich darum gebeten, sinnvolle Vorschläge zu bekommen, was mein etwas holpriges PHP angeht. Und so kam es dazu, statt eines miesen Switch-Statements durch Tipps von Christian Nielebock alias @Ravetracer ein schickes kleines PHP-Framework namens “Slim” zum Einsatz kommt, dass ordentliche Routen verwalten kann.

Und nachdem wir ein bisschen über das .csv und ob das vielleicht auch sinnvoller geht, kam kurze Zeit später ein Pull-Request rein, der die Slim-Routen mit RedBeanPHP erweitert hat und damit ein stress- und konfigurationsloses Interagieren mit SQLite ermöglicht hat.

Soviel zur Historie…

Dann kam das Leuchten in meine Augen:

  1. Localstorage als Fallback
  2. HTML5-Appcaching (soll ja primär mobil laufen…)
  3. Für die Zukunft ein sync-Modell mit der Möglichkeit, offline Daten hinzuzufügen und zu löschen.

Blöderweise musste ich nun feststellen, dass das mit dem HTML5-AppCache gar nicht so geil ist wie man denkt. Da ich mich mit dem Thema noch nie auseinandergesetzt hatte, musste ich also erstmal ein bisschen recherchieren. Zuerst stieß ich auf einen englischen Wikipedia-Artikel. Dieser verwies auf einen Eintrag bei HTML5Rocks und einen Artikel bei A List Apart. Spätestens der zweite Artikel zog mir an dieser Stelle die Socken aus: “Using ApplicationCache for static content only”.

Das macht zwei Dinge für einfache Dinge kaputt: Ordentliche Versionsverwaltung. Die kann ich mir auch sparen, wenn ich verschiedene Datei-Versionen cachen will. Oder ich muss den Deployment-Prozess extrem verändern. Und solange ich keine vernünftige Lösung dafür habe, kann ich Usern also keine Offline-Cache-Version anbieten.

Okay, das mit dem Localstorage ist aktuell schon in den develop-Zweig gemergt. Damit steht dem Zukunftsausblick mit dem Sync erstmal nichts großes mehr im Weg. Erstmal kommt wieder ein bisschen Verfeinerung in die App-Abläufe und dann geht’s weiter.

Wenn jemand interessiert ist, ein paar Gedanken oder Codezeilen an die Einkaufsliste zu verschwenden, kann er sich das Trello-Board anschauen, welches ein paar Features und Ideen beinhaltet, oder direkt bei Github in den Tickets oder mit Pull-Requests mitmachen.

Oder mir einfach eine Email schreiben: chris@-entfernen-develovers.de

Von Chris Jung

Ich bin Entwickler bei basecom und erstelle nebenberuflich kleine Websites für kleine Unternehmen und Privatpersonen. Ich bin Open Source Fan und Blogger.

Portfolio . twitter . github