Was nicht mitreist, ist nicht da: Ein Tag mit Merkliste, Karte und Formular
Manche Arbeitstage bestehen aus einem großen Baustein. Dieser hier bestand aus zwei Dutzend kleinen — und war trotzdem der lehrreichste seit Langem, weil sich hinter fast allen Fundstellen dieselbe Frage verbarg: Woher weiß der Server, was der Besucher schon getan hat?
Wir haben die Immobilien-Website nicht getestet, sondern benutzt. Suchen, merken, vergleichen, ein Exposé öffnen, zurückgehen. Genau so, wie es jemand tut, der eine Wohnung sucht und nicht unsere Software bewundern will.
Die Merkliste, die es zweimal gab
Wer sich ein Angebot merkt, erwartet, dass es gemerkt bleibt. Das tat es auch — nur lag die Merkliste ausschließlich im Browser. Für den Server war sie unsichtbar.
Das hatte eine unangenehme Folge. Beim Aufruf der Merkliste schickte der Server zuerst eine leere Seite, dann las ein kleines Programm im Browser die gemerkten Angebote aus, schrieb sie in die Adresse und lud die Seite noch einmal. Man sah kurz „Ihre Merkliste ist leer", dann sprang die Adresse um, dann kamen die Angebote. Zwei Anfragen für eine Seite — und dazwischen eine Behauptung, die nicht stimmte.
Die Lösung war unspektakulär und genau deshalb richtig: Die Auswahl reist jetzt in einem kleinen funktionalen Cookie mit. Ein Cookie ist das Einzige, was der Browser von sich aus bei der allerersten Anfrage mitschickt. Damit weiß der Server sofort Bescheid und liefert die fertige Seite: die gemerkten Angebote, die Zähler in den Schaltflächen, und sogar die Herzsymbole an den Karten stehen von der ersten Sekunde an richtig.
Darin steht nichts als die Nummern der Angebote, die jemand selbst angeklickt hat. Es entsteht erst, wenn wirklich etwas gemerkt wurde, es endet nach dreißig Tagen, und es dient ausschließlich der Funktion, die der Besucher angefordert hat.
Ein Rückweg, der die Suche vergaß
Die nächste Fundstelle war subtiler. Wer in Coswig im Umkreis von zehn Kilometern sucht, sich zwei Angebote merkt und dann auf die Merkliste wechselt, will von dort zurück in seine Suche. Bei uns führte die Schaltfläche zurück auf den vollen Bestand und zeigte stolz die Gesamtzahl aller Immobilien.
Der Grund: Unser Suchzustand lebt in der Adresse — das ist gut, denn so lässt sich jede Trefferliste teilen, verlinken und als Lesezeichen ablegen. Nur ging die Adresse beim Sprung zur Merkliste verloren.
An dieser Stelle kam die beste Frage des Tages, und sie kam nicht von mir: Warum bauen wir dafür einen zweiten Weg, wenn das Exposé die Suche längst mitnimmt? Vollkommen berechtigt. Beim Exposé hängt der Suchzustand am Link, den die Liste selbst erzeugt — und was ein Link tragen kann, gehört in die Adresse und nicht in eine zweite Ablage. Merkliste und Vergleich machen es jetzt genauso. Kommt jemand über das Menü statt aus einer Suche, gibt es schlicht keine Suche zu bewahren; dann führt die Schaltfläche auf den vollen Bestand, und das ist dann auch die ehrliche Antwort.
Der Fehler, der nichts anzeigte
Bei der Umkreissuche blieb die Karte grau. Kein Kartenmaterial, keine Marker, keine Meldung — ein leeres Rechteck mit Zoom-Knöpfen.
Die Ursache war ein Reihenfolgeproblem von der lehrreichen Sorte. Für den roten Umkreis muss die Karte wissen, welchen Ausschnitt sie zeigen soll. Wir haben den Ausschnitt aus dem Kreis berechnet — nur rechnet ein Kreis seine Grenzen in Bildpunkten, und Bildpunkte gibt es erst, wenn die Karte bereits einen Ausschnitt hat. Henne und Ei. Der Aufruf scheiterte, und mit ihm alles, was danach kam.
Das Ärgerliche daran war nicht der Fehler, sondern seine Unsichtbarkeit: Die Meldung sollte in einen Hinweistext geschrieben werden, den die Karte in dem Moment längst ersetzt hatte. Sie ging also ins Leere. Übrig blieb ein graues Feld, das nach einem Design-Problem aussah und keines war.
Jetzt setzt der Mittelpunkt den Ausschnitt und der Kreis kommt danach obendrauf. Und wenn eine Karte doch einmal scheitert, sagt sie es — an der Stelle, wo die Karte stehen sollte. Ein Fehler, der nichts anzeigt, wird spät gefunden.
Zwei Ablagen, eine Wahrheit
Jetzt der Teil, bei dem ich mir selbst auf die Finger geschaut habe.
Als das Cookie eingeführt war, blieb die alte Ablage im Browser einfach daneben liegen. Beides zu pflegen wirkte harmlos — bis auffiel, dass die Seiten weiterhin ein zweites Mal luden. Das Programm im Browser entschied nämlich immer noch anhand der Adresse, ob es nachladen muss, und in der Adresse stand nach dem Umbau nichts mehr. Also lud es jede fertig gerenderte Seite erneut: doppelte Serverlast, sichtbar als kurzes Flackern am Ende.
Die Frage, die das aufgelöst hat, war schlicht: Warum eigentlich zwei Ablagen? Es gab keinen guten Grund. Seitdem gibt es nur noch das Cookie. Damit sind der Abgleich zwischen beiden, die Vorrangregel und der ganze Nachladeweg verschwunden — und mit ihnen die Stelle, an der sich der doppelte Aufruf überhaupt einschleichen konnte. Der zuständige Programmteil ist um ein Viertel geschrumpft.
Die Lehre daraus ist unbequem, aber gut: Eine zweite Ablage ist keine Absicherung, sondern eine zweite Wahrheit.
Was man sofort sieht
Parallel lief die Feinarbeit am Exposé — der Vergleich mit unserem Vorbild, Bildschirm neben Bildschirm.
Die Schaltflächen über den Angaben waren zu klein, die Trefferzahl fehlte, und auf dem Handy quetschten sie sich statt sich zu stapeln. Übernommen wurde deshalb nicht das Aussehen, sondern die Bauform: volle Knopfgröße, die Anzahl der Treffer im Knopf, und auf schmalen Bildschirmen ein Knopf je Zeile.
Die drei Kästen der rechten Spalte — Anbieter, Energieausweis, Kontaktformular — waren bei uns Kacheln mit Schatten, im Vorbild klappbare Kästen. Jetzt lässt sich jeder Kasten am Kopf zuklappen, samt wechselndem Zeichen, und der ganze Kopf reagiert auf den Klick, nicht nur das kleine Symbol.
Und das Kontaktformular hat seine Prüfung zurückbekommen. Vorher übernahm der Browser das Meckern — mit seiner eigenen kleinen Sprechblase, die zu keiner Website passt, weil sie zu jeder gehört. Jetzt sagt das Formular selbst, welches Feld ihm fehlt, markiert es und springt hinein. Dazu die Kleinigkeiten, die man erst vermisst, wenn man sie sieht: Vorname und Name nebeneinander, Platzhalter in den Feldern, ein Länderfeld, das es vorher gar nicht gab.
Und der Weg wieder heraus
Zum Schluss zwei Dinge, die zusammengehören.
Unsere Karten laden ihr Material erst nach ausdrücklicher Zustimmung — vorher geht keine einzige Anfrage nach außen. Diese Zustimmung lag bisher wieder nur im Browser, weshalb der „Karte laden"-Kasten auf jeder neuen Seite kurz aufblitzte, obwohl längst zugestimmt war. Auch sie reist jetzt mit und gilt für die Dauer des Besuchs.
Und weil man alles, was man gibt, auch zurücknehmen können muss, gibt es eine Adresse, die genau das tut: Sie löscht alles, was diese Website auf dem Gerät abgelegt hat — Merkliste, Vergleich, Kartenzustimmung — und bringt den Besucher mit einer kurzen Bestätigung zurück auf die Startseite. Der Link dafür gehört auf die Datenschutzseite, und dort wird er auch stehen.
Die Bestätigung selbst ist übrigens gleich als Werkzeug gebaut worden: eine Meldung, die genau einmal erscheint, oberhalb des Inhalts, in drei Tonlagen von Hinweis bis Fehler. Jeder Teil der Anwendung kann sie künftig benutzen.
Was wir mitnehmen
Zustand, der nicht mitreist, existiert für den Server nicht. Fast jede Fundstelle dieses Tages war eine Variante davon. Wer eine Seite serverseitig fertig ausliefern will, muss dafür sorgen, dass alles Nötige mit der ersten Anfrage ankommt.
Was ein Link tragen kann, gehört in die Adresse. Erst was dort unmöglich ist — eine Auswahl, die nur der Browser kennt —, rechtfertigt eine Ablage auf dem Gerät.
Ein halber Umbau ist teurer als keiner. Der doppelte Seitenaufruf entstand nicht durch das Neue, sondern dadurch, dass das Alte danebenstehen blieb.
Man wird von alledem als Besucher nichts bemerken. Seiten stehen sofort, Herzen sind gefüllt, die Suche ist noch da, wo man sie verlassen hat. Genau das ist der Punkt: Die gelungene Version dieser Arbeit ist die, die niemandem auffällt.