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

1666
lousyuser

Kontext:

Ich benutze mein Firefox-Profil seit einigen Jahren. Meine History-Datei 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

Das Aufrufen von Verlaufseinträgen beim Eingeben in die Awesome Bar auf meinem Desktop dauert trotz der anständigen Konfiguration ziemlich lange. Der Laptop ist noch langsamer. Die Erfahrung ist ziemlich unbeantwortet.

Ich dachte mir, wenn ich den Verlauf ein wenig aufräumte, 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 History-Datei ist eine Art SQL-Datenbank, aber ich bin nicht wirklich sicher, wie die Daten gespeichert werden, ob es einen "sicheren Weg" gibt, um sie zu bearbeiten und wie die Abfrage aussehen soll, die ich brauche.


Ich habe die letzten SuperUser-Fragen immer wieder durchgesehen und nach relevanten Informationen gesucht.

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

Da ich mit Datenbanken nicht vertraut bin, verstehe ich die Zusammenhänge zwischen den beiden im Angebot genannten Tabellen nicht wirklich.

Screenshot eines Teils der Tabellen places_sqlite

Mir ist aufgefallen visit_count, dass es sich um ein Standardformat handelt, das die Arbeit mit ihm erleichtert. Das last_visit_datesieht mit meinem bloßen Auge verschlüsselt aus, aber ich sehe nicht, auf welche Weise.

Ich hoffe, das hilft, ich bin am Ende meines Verstandes.

10
Was hast du bisher versucht? Bevor Sie fortfahren, können Sie bestätigen, dass ein brandneues Firefox-Profil vor allem auf dem Laptop eine schnappere Erfahrung bietet? and31415 vor 10 Jahren 0
Ich habe gerade eine Antwort gepostet, die einige neue Informationen enthält. Nein, ich habe es nicht ausprobiert, aber ich erinnere mich genau, dass die Awesome Bar viel knackiger war, als das Profil recht neu war (und der Verlauf durch einige Einträge übersichtlich war), sowohl auf dem Laptop als auch auf dem Desktop. lousyuser vor 10 Jahren 1
Haben Sie nach dem Löschen Ihrer Historie eine Leistungsverbesserung gesehen? - edit: oops: Ich sehe jetzt, dass Sie die ausgewählte Antwort kommentiert haben und eine große Verbesserung festgestellt haben. ndemou vor 8 Jahren 0
Um eine Ihrer Fragen zu beantworten, wenden Sie sich an [diese Antwort] (http://superuser.com/questions/64477/how-to-remove-large-umber-of-entries-von-url-history-in-firefox?rq = 1), Firefox verwendet tatsächlich SQL. Ich empfehle, SQLLite hochzufahren und von dort weiterzugehen. cybermonkey vor 10 Jahren 0

1 Antwort auf die Frage

8
ᔕᖺᘎᕊ

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


BACKUP ZUERST. Schließen Sie zuerst FIREFOX


Dazu müssen Sie die SQLite- Datenbank (eine eigenständige 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 5-mal angezeigt und nicht im Browser angezeigt letzte 120 Tage).


BACKUP ZUERST. Schließen Sie zuerst FIREFOX

Anweisungen beginnen:


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

  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 places.sqliteSie in dem Verzeichnis, das Sie in Schritt 4 geöffnet haben.

    ERSTES ERSTES BACKUP !!

  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)bis 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. Prüfen Sie, ob die angezeigten Seiten korrekt sind (aber es sollte ein Doppelcheck sein!)

  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 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 erkennen, auf welche Weise.

Ich würde es nicht "verschlüsselt" nennen (obwohl ich nicht der 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 um 00:00:00 (UTC) vergangen sind. Eine Stunde ist 3600 Sekunden. 1 Jahr ist 31556926 Tage.

Für mehr Information. Überprüfen Sie diesen Wikipedia- Artikel oder diese Website, die die Zeit in Epoche umwandelt.


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

SQLite-Datenbankbrowser SQLite-Datenbankbrowser SQLite-Datenbankbrowser

Dank an ;):

Um die Sicherheit zu erhöhen, möchten Sie möglicherweise eine Kopie (Sicherung) der Datenbank erstellen, bevor Sie dies tun. Bob vor 10 Jahren 0
Wenn Sie dies richtig machen möchten, sollten Sie auch alle Einträge löschen, die keine entsprechende "place_id" mehr haben. Bob vor 10 Jahren 0
Entschuldigung, ich meinte das Löschen von `moz_historyvisits` Bob vor 10 Jahren 0
@ Bob und `place_id` in` moz_historyvisits` = `id` in` moz_places`? ᔕᖺᘎᕊ vor 10 Jahren 0
Sollte sein. Es gibt zwei Möglichkeiten, um damit umzugehen: 1. Löschen von `moz_historyvists` first (`Löschen von moz_historyvisits als hv left join moz_places als p auf hv.place_id = p.id wobei p.visit_count ...`) oder 2. nach dem Löschen Bei "moz_places" können Sie alle Einträge, die nicht über den entsprechenden Eintrag verfügen, aus "moz_historyvisits" löschen (http://stackoverflow.com/a/3384143). Ich bevorzuge Option 1 persönlich. Verwenden Sie es nicht ohne zu testen; meine SQL ist ziemlich rostig und ich habe mit pgsql gelernt, nicht mit sqlite. Sie können tatsächlich von beiden gleichzeitig löschen, Lemme-Test. Bob vor 10 Jahren 0
Wenn man sich das [Diagramm der Entitätenbeziehung] (http://people.mozilla.org/~dietrich/places-erd.png) ansieht, gibt es tatsächlich noch einige andere Orte, die auf "moz_places" verweisen. Es ist einfacher anzunehmen, dass Firefox bemerkt, dass diese nicht mehr vorhanden sind, und bereinigt sie entsprechend. Bob vor 10 Jahren 0
@ Bob Das habe ich mir gedacht. Firefox sollte das zumindest tun, ich weiß einfach nicht, wie ich das überprüfen soll ... Ich kann im History Viewer sehen, dass es keine weiteren History mehr gibt (die ich sehen kann) ᔕᖺᘎᕊ vor 10 Jahren 0
Danke vielmals! Wenn Sie alle ungültigen Einträge löschen möchten, die von den jetzt gelöschten Protokolldatensätzen abhängig sind, ist wahrscheinlich ein umfassendes Wissen darüber erforderlich, wie Firefox funktioniert. Dies wird jedoch ausreichen. Die Awesome Bar ist jetzt viel knackiger. lousyuser vor 10 Jahren 0
Ich füge hinzu, dass Sie diese Schritte erst nach dem Schließen des Browsers ausführen sollten. and31415 vor 10 Jahren 0