Externes Cache-Verzeichnis regelmäßig löschen

  • Für meine App speichere ich Kartenbilder in einem Cache-Speicher auf dem externen Speicher, um die Aufrufe der von mir verwendeten API zu reduzieren. Da es sich bei diesen Daten um Kartendaten handelt, können sich diese im Laufe der Zeit ändern. Daher sollten diese Images regelmäßig aktualisiert werden.

    Wie kann ich das Cache-Verzeichnis regelmäßig programmgesteuert löschen? Sagen Sie zum Beispiel jede Woche.

    Einige zusätzliche Gedanken: Vielleicht ist das Löschen des gesamten Verzeichnisses nicht die beste Lösung. Vielleicht kann ich die "Frische" jedes Bildes überprüfen und die alten löschen?

    22 November 2011
    Ryan R
1 answer
  • Ja, normalerweise ist es eine gute Idee, den Cache mit der einen oder anderen Methode zu begrenzen. Einige Caches haben feste Größen, und älterer Inhalt wird entfernt, sobald die Cachegröße überschritten wird. Diese Größe kann die Anzahl der Elemente oder die Größe des Speicherplatzes sein. Einige Caches haben TTLs für jedes Element (oder dieselbe TTL für alle Elemente), sodass die Elemente nach einer bestimmten Zeit verfallen. Einige Caches laufen möglicherweise nie ab. Möglicherweise ist die Größe durch die Anzahl möglicher Elemente begrenzt, die zuerst zwischengespeichert werden würden. Jeder dieser Ansätze ist gültig, auch wenn einige für bestimmte Szenarien geeigneter sind als für andere.

    Die "Frische" -Idee ist wahrscheinlich ein Ansatz, den ich in Betracht ziehen würde. Es ist das gleiche wie die TTL. Grundsätzlich möchten Sie eine Zeitdauer festlegen, für die Ihr Cache-Element aktiv sein soll. Speichern Sie diese Cache-Zeit zusammen mit den Cache-Daten und prüfen Sie sie beim Lesen der Cache-Daten. Wenn das Verfallsdatum überschritten ist, können Sie diese Cache-Datei löschen und die Kartendaten erneut von der API abrufen (und diese zwischenspeichern). Sie können möglicherweise auch nur die Dateierstellungszeit lesen, wenn Sie ein Datum nicht separat speichern möchten und eine feste Lebensdauer haben, die in Ihrer Anwendung fest programmiert oder konfigurierbar ist.

    Aktualisieren, um Kommentare anzusprechen:

    Ich habe die URL bereits zuvor als Dateinamen verwendet. Seien Sie sich jedoch bewusst, dass es möglicherweise zu Kollisionen kommen kann (stark abhängig von Ihrem Hash-Algorithmus und natürlich Ihrem Datensatz). Wenn Sie viele URLs durchlaufen, kann auch die Leistung Ihres Hash-Algorithmus von Bedeutung sein.

    Das Speichern dieser Cache-Metadaten in einer Textdatei ist in Ordnung, insbesondere wenn Sie dies tun Ich habe keine Tonnen von URLs. Sie sollten jedoch vorsichtig sein, wie Sie diese Textdatei aktualisieren. Sie können es leicht beschädigen, wenn Sie nicht vorsichtig sind und ohne korrekte Synchronisierung von mehreren Threads darauf zugreifen. Wenn Sie über viele Daten verfügen, können Sie auch eine Datenbank verwenden. Wenn Sie diese ca

    22 November 2011
    kabukoBrad Leach