Reduzieren von Ladezeiten mittels Cache

  • Nach ein paar kleineren Experimenten bin ich erstaunt, wie schnell die Menüdarstellung bei Add-ons sein kann, wenn man Webseiten zwischenspeichert. NHL.com braucht über zwei Sekunden für eine Antwort, mit Cache ist die Wartezeit zum Hauptmenü manuell nicht wirklich zu messen (geschätzt so 250ms). Gerade im Hinblick auf die ARM Platformen ist die Zeiteinsparnis enorm.

    Der Code dürfte selbsterklärend sein:

    Für Menüs ohne häufige Änderungen ist das sicher nicht schlecht.

  • Das gute 1x1 einer Softwareentwicklung. Verwende ich nur in meinen Addons. Habe aber selber etwas drumgestrickt (eigenes Framework), welches auch sauber auf den Android-Systemen läuft. Hier ein Auszug für 7TV. Sieht etwas complex aus. Weil das über einen Context läuft, weil man somit sauber injekten kann (kein dreckiges python monkey patching, was viele so lieben). Das vereinfacht Tests und beschleunigt im Nachhinein TDD.

    Zusätzlich gibt es noch ein GetCachedOnly, somit lassen sie Werte abfragen, nur wenn diese bereits im Cache sind. Warum? Es gibt viele Situationen, bei denen du nicht 12x einen Request an einen Server stellen willst, um zB. die Hintergrundgrafik zu bekommen. Statt dessen wird nur gefragt, ob diese Abfrage bereits erfolgt ist. Ich brauche das für 7TV und vor allem YouTube, weil sonst die Quota den Bach runter geht und bestimmte Dinge noch länger brauchen würden.


    Code
    data = context.get_function_cache().get(FunctionCache.ONE_HOUR, self._get_client(context).get_format_content, ....)

    Use the cache membrane ;)

  • Da fällt mir noch grad ein...da gibt es auch noch das tolle ETag...falls dich das interessiert. Das ist ein Standard für HTTP-Request. Alle Google-APIs unterstützen das. Ich habe es einmal getestet.

    http://en.wikipedia.org/wiki/HTTP_ETag


    Dann kannst du Anfragen an den Server stellen und stellst zusätzlich If-None-Match im Header mit dem ETag zur Verfügung stellen. Wenn der Server mit 304 (Not Modified) antwortet kannst die lokal gehaltenen Daten weiter verwenden.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!