Firefox 29 - Wie lösche ich Verlaufseinträge, die weniger als x Mal besucht wurden?

11

Kontext:

Ich benutze mein Firefox-Profil seit einigen Jahren. Meine Verlaufsdatei ist natürlich riesig geworden. Ich habe Firefox Sync zwischen meinem Haupt-Desktop-PC und meinem Laptop eingerichtet.

HW-Konfigurationen:

  • PC: i5-3450, 8 GB DDR3-RAM, Crucial M4 128 GB SSD
  • Laptop: Pentium SU4100, 4 GB DDR3-RAM, WD 5400 U / min HDD

Der Zugriff auf Verlaufseinträge beim Eingeben in die Awesome-Leiste auf meinem Desktop dauert trotz der anständigen Konfiguration ziemlich lange. Der Laptop ist sogar noch langsamer. Die Erfahrung reagiert nicht.

Ich dachte mir, wenn ich den Verlauf ein wenig aufkläre, könnte ich es vermeiden, ein neues Profil zu erstellen, um die Dinge zu beschleunigen.

Die Frage selbst:

Um zu zeigen:

Geschichte

Gibt es eine Möglichkeit, alle Verlaufseinträge zu löschen, die weniger als x (sagen wir 5) Mal besucht wurden und gleichzeitig der letzte Besuch weniger als y (sagen wir 120) Tage alt ist?

afaik die Verlaufsdatei ist eine Art SQL-Datenbank, aber ich bin mir nicht sicher, wie die Daten gespeichert werden, ob es einen "sicheren Weg" gibt, sie zu bearbeiten und wie die Abfrage aussehen würde, um das zu tun, was ich brauche.


Ich habe die vorherigen SuperUser-Fragen durchsucht, um festzustellen, ob ich relevante Informationen finden konnte.

In meinem Firefox-Profilverzeichnis befindet sich eine Datei mit dem Namen places.sqlite. Das Öffnen mit SQLite zeigt (unter anderem) die Tabellen moz_placesund moz_historyvisits. Es scheint, dass moz_historyvisitsdie primäre von verwendet wird moz_places, um auf die URLs zu verweisen.

Da ich mit Datenbanken nicht vertraut bin, verstehe ich die Beziehung zwischen den beiden im Zitat genannten Tabellen nicht wirklich.

Screenshot eines Teils der Tabellen Orte_sqlite

Ich habe festgestellt, dass das visit_countFormat in einem Standardformat vorliegt, was die Arbeit erleichtert. Die last_visit_dateBlicke sind mit bloßem Auge verschlüsselt, aber ich kann nicht sehen, auf welche Weise.

Hoffe das hilft, ich bin am Ende meines Verstandes.

lousyuser
quelle
Um eine Ihrer Fragen zu beantworten , verwendet Firefox gemäß dieser Antwort tatsächlich SQL. Ich empfehle, SQLLite zu starten und von dort aus fortzufahren.
AStopher
Was hast du bisher versucht? Können Sie vor dem Fortfahren bestätigen, dass ein brandneues Firefox-Profil eine schnellere Erfahrung bietet, insbesondere auf dem Laptop?
and31415
1
Ich habe gerade eine Antwort gepostet, die einige neue Informationen enthält. Was die Schnelligkeit betrifft, nein, ich habe es nicht versucht, aber ich erinnere mich deutlich daran, dass die Awesome Bar viel schneller war, als das Profil ziemlich neu war (und der Verlauf durch einige Einträge übersichtlich war), sowohl auf dem Laptop als auch auf dem Desktop.
Lousyuser
Haben Sie nach dem Löschen Ihres Verlaufs eine Leistungsverbesserung festgestellt? - edit: oops: Ich sehe jetzt, dass Sie die ausgewählte Antwort kommentiert haben und eine große Verbesserung festgestellt haben.
ndemou

Antworten:

9

Mit einigen Recherchen (siehe 'Referenzen' am Ende) habe ich mir diese (Art) einfache Lösung ausgedacht:


Backup zuerst. FIREFOX ZUERST SCHLIESSEN


Dazu müssen Sie die SQLite- Datenbank (eine in sich geschlossene SQL-Datenbank; siehe Wikipedia-Artikel ) von Mozilla Firefox bearbeiten, indem Sie eine Abfrage durchführen, um alle Datensätze zu finden, die die Bedingung erfüllen (in Ihrem Fall - weniger als fünfmal angezeigt und nicht in der letzte 120 Tage).


Backup zuerst. FIREFOX ZUERST SCHLIESSEN

Anleitung beginnt:


Dies funktioniert (getestet und funktioniert mit meinem Firefox v. 29.0.1). In 12 einfachen (ish) Schritten:

  1. Installieren Sie den SQLite-Datenbankbrowser

  2. Öffne es

  3. Klicken Sie auf Datenbank öffnen

  4. Navigieren Sie nach C:\Users\[USER]\AppData\Roaming\Mozilla\Firefox\Profiles\[PROFILE]Bedarf zur Bearbeitung

    BACKUP die folgende Datei FIRST !!

  5. Öffnen Sie places.sqliteaus dem Verzeichnis, das Sie in Schritt 4 geöffnet haben.

    Ernsthaft, Backup zuerst !!

  6. Klicken Sie auf die Registerkarte SQL ausführen.

  7. Geben Sie Folgendes ein:

    SELECT *
    FROM moz_places
    WHERE
        last_visit_date BETWEEN strftime('%s','2014-04-01')*1000000
                        AND strftime('%s','2014-05-30')*1000000
        AND visit_count < x(2)
    
  8. Ersetzen Sie x(2)auf 5 (in Ihrem Beispiel)

  9. Ersetzen Sie 2014-04-01und 2014-05-30mit dem gewünschten Datumsbereich

  10. Drücken Sie die blaue Wiedergabetaste.

  11. Überprüfen Sie, ob die angezeigten Websites korrekt sind (sie sollten es sein, aber überprüfen Sie es noch einmal!)

  12. Wenn dies der Fall ist, ersetzen Sie die ersten beiden Zeilen des obigen Codes durch:

    DELETE
    FROM moz_places
    

    Ihr Code sieht also ungefähr so ​​aus:

    DELETE
    FROM moz_places
    WHERE
        last_visit_date BETWEEN strftime('%s','2014-04-01')*1000000
                        AND strftime('%s','2014-05-30')*1000000
        AND visit_count < x(2)
    

ERLEDIGT! Schließen Sie das Programm und klicken Sie beim Schließen auf Speichern.

Anweisungen enden


Was ist mit dem last_visit_date?

Das last_visit_date sieht für mein bloßes Auge verschlüsselt aus, aber ich kann nicht sehen, auf welche Weise.

Ich würde es nicht "verschlüsselt" nennen (obwohl ich nicht anderer Meinung bin, dass es verschlüsselt aussieht). Es ist nur in einem anderen "System". Das Datum befindet sich im UnixZeitsystem (oder Epoch/ POSIX). Dies ist die Anzahl der Sekunden, die seit dem 1. Januar 1970, 00:00:00 (UTC) vergangen sind. 1 Stunde entspricht 3600 Sekunden. 1 Jahr ist 31556926 Tage.

Für mehr Information. Schauen Sie sich diesen Wikipedia- Artikel oder diese Website an, die die Zeit in und aus der Epoche umwandelt.


Screenshots (ignorieren Sie die SQL-Abfragen auf diesen Bildern, sie sind falsch. Diese sollen Ihnen hauptsächlich sagen, wo Sie suchen müssen)

SQLite-Datenbankbrowser SQLite-Datenbankbrowser SQLite-Datenbankbrowser

Dank an ;):

ᔕᖺᘎᕊ
quelle
Aus Sicherheitsgründen möchten Sie möglicherweise vorher eine Kopie (Sicherung) der Datenbank erstellen.
Bob
Wenn Sie dies ordnungsgemäß ausführen möchten, sollten Sie auch moz_placesalle Einträge löschen, für die keine entsprechenden Einträge mehr vorhanden sind place_id.
Bob
Entschuldigung, ich meinte löschen vonmoz_historyvisits
Bob
@ Bob Und place_idin moz_historyvisits= idin moz_places?
29.
Sollte sein. Es gibt zwei Möglichkeiten, damit umzugehen: 1. Löschen von moz_historyvists first ( delete from moz_historyvisits as hv left join moz_places as p on hv.place_id = p.id where p.visit_count...) oder 2. Nach dem Löschen moz_placeskönnen Sie alle Einträge löschen moz_historyvisits, die nicht über den entsprechenden Eintrag verfügen . Ich persönlich bevorzuge Option 1. Verwenden Sie es nicht ohne Tests. Mein SQL ist ziemlich verrostet und ich habe mit pgsql gelernt, nicht mit sqlite. Möglicherweise können Sie tatsächlich beide gleichzeitig löschen, Lemme-Test.
Bob