Bilder: der Cache-Brecher haengt am Foto statt an der Startzeit
Beide Oberflaechen haengten Date.now() an jede Bildadresse - richtig gegen ein veraltetes Foto (31 Tage Cache-Vorgabe unter /local/), aber die Adresse aendert sich damit bei JEDEM Start, der Zwischenspeicher greift zwischen zwei Starts also nie. Mit dem Vorladen waeren das 5,3 MB je Start gewesen. bilder.staende() liefert jetzt den Zeitstempel je Datei, veroeffentlicht an sensor.audi_dashboard_app_version; eine Bildadresse aendert sich damit genau dann, wenn das Foto ein anderes ist. Ein fehlendes Foto bekommt 0 (dann loest sich auch ein gespeicherter 404 von selbst auf), ein Backend ohne Staende faellt auf das bisherige Verhalten zurueck, und Upload wie Loeschen veroeffentlichen sofort neu. Die App merkt sich den letzten Stand im Browserspeicher: sie malt ihren ersten Bildschirm, bevor die Versionsangabe eintrifft - ohne das Gedaechtnis trug genau dieser Durchlauf noch die Startzeit und holte das Uebersichtsfoto doch wieder bei jedem Start. Live gemessen: Neuladen ohne Aenderung 5.328.771 Bytes Inhalt bei 0 Bytes uebertragen; ein per touch geaendertes Foto wird neu geholt (513.403 Bytes), die anderen nicht; App-Start ohne eine einzige Adresse mit Startzeit. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -407,13 +407,14 @@ def registrieren(hass: HomeAssistant, k: Koordinator) -> None:
|
||||
D_TANKVORGANG_LOESCHEN: _als_dienst(
|
||||
lambda a: belege.tankvorgang_loeschen(k, a.data["tank_id"])
|
||||
),
|
||||
# Nach dem Schreiben sofort neu veroeffentlichen: der Bildstand
|
||||
# haengt an der Datei, und ohne diese Zeile saehe die Oberflaeche
|
||||
# das neue Foto erst beim naechsten Minutentakt.
|
||||
D_BILD_HOCHLADEN: _als_dienst(
|
||||
lambda a: bilder.hochladen(
|
||||
hass, bilder_ordner, a.data["dateiname"], a.data["daten_base64"]
|
||||
)
|
||||
lambda a: _bild_hochladen(k, hass, bilder_ordner, a)
|
||||
),
|
||||
D_BILD_LOESCHEN: _als_dienst(
|
||||
lambda a: bilder.loeschen(hass, bilder_ordner, a.data["dateiname"])
|
||||
lambda a: _bild_loeschen(k, hass, bilder_ordner, a)
|
||||
),
|
||||
D_REIFEN_WECHSELN: _als_dienst(lambda a: reifen.wechseln(k, a.data["satz"])),
|
||||
D_REIFEN_KM_SETZEN: _als_dienst(
|
||||
@@ -444,3 +445,14 @@ def registrieren(hass: HomeAssistant, k: Koordinator) -> None:
|
||||
def abmelden(hass: HomeAssistant) -> None:
|
||||
for name in SCHEMATA:
|
||||
hass.services.async_remove(DOMAIN, name)
|
||||
|
||||
async def _bild_hochladen(k, hass, ordner, aufruf) -> None:
|
||||
await bilder.hochladen(
|
||||
hass, ordner, aufruf.data["dateiname"], aufruf.data["daten_base64"]
|
||||
)
|
||||
await k.app_version_veroeffentlichen()
|
||||
|
||||
|
||||
async def _bild_loeschen(k, hass, ordner, aufruf) -> None:
|
||||
await bilder.loeschen(hass, ordner, aufruf.data["dateiname"])
|
||||
await k.app_version_veroeffentlichen()
|
||||
|
||||
Reference in New Issue
Block a user