Firefox 29 - як видалити записи історії, відвідані менше ніж x разів


11

Контекст:

Я використовую свій профіль Firefox вже пару років. Мій файл історії, природно, став величезним. Мені встановлено Firefox Sync між основним настільним ПК та ноутбуком.

Конфігурації HW:

  • ПК: i5-3450, 8 ГБ оперативної пам’яті DDR3, вирішальний M4 128 ГБ SSD
  • ноутбук: Pentium SU4100, 4 Гб оперативної пам'яті DDR3, WD 5400 об / хв

Доступ до записів історії під час введення в Awesome Bar на робочому столі займає досить багато часу, незважаючи на пристойну конфігурацію, ноутбук ще повільніше. Досвід досить невідповідний.

Я подумав, що якщо я трохи очистив історію, я можу уникати створення нового профілю для прискорення речей.

Само питання:

Проілюструвати:

історія

Чи є можливість видалити всі записи з історії, які були відвідані менше, ніж x (скажімо, 5) разів, і в той же час останній візит менше, ніж y (скажімо, 120) днів?

Файл історії afaik - це якась база даних SQL, але я не дуже впевнений, як зберігаються дані, якщо є "безпечний спосіб" їх редагувати і як виглядатиме запит для виконання того, що мені потрібно.


Я постійно переглядав попередні питання SuperUser, щоб дізнатися, чи зможу я знайти відповідну інформацію.

У моєму каталозі профілів Firefox є файл з назвою places.sqlite. Відкриваючи його sqlite, відкриваються (серед інших) таблиці moz_placesта moz_historyvisits. Здається, що moz_historyvisitsвикористовується основний елемент moz_placesдля позначення URL-адрес.

Оскільки я не знайомий з базами даних, я не дуже розумію, як пов’язані дві таблиці, згадані у цитаті.

скріншот частини таблиць місця_sqlite

Я помітив, що visit_countв стандартному форматі це полегшує роботу. У last_visit_dateвиглядає зашифровані моєму неозброєним оком, але я не можу бачити , в який бік.

Сподіваюсь, що це допомагає, я до кінця дотепний.


Щоб відповісти на одне із ваших запитань, відповідно до цієї відповіді , Firefox насправді використовує SQL. Я рекомендую запустити SQLLite і піти звідти.
AStopher

Що ви намагалися поки що? Перш ніж продовжити, чи можете ви підтвердити, що абсолютно новий профіль Firefox забезпечує сприятливий досвід, особливо на ноутбуці?
і31415

1
Я щойно опублікував відповідь, яка містить нову інформацію. Що стосується простоти, ні, я не пробував, але я чітко пам’ятаю, що Awesome Bar був набагато спритнішим, коли профіль був зовсім новим (а історія розбита багатьма записами), як на ноутбуці, так і на робочому столі.
lousyuser

Отже, ви побачили покращення продуктивності після очищення історії? - edit: oops: Я бачу, що ви прокоментували вибрану відповідь, і ви помітили велике вдосконалення.
ndemou

Відповіді:


9

З деякими дослідженнями (див. Наприкінці "довідки") я придумав таке (своєрідне) просте рішення:


ПЕРШИЙ НАЗАД. ЗАКРИТИ ФІРЕФОКС ПЕРШИЙ


Для цього потрібно відредагувати базу даних SQLite (автономна база даних SQL; див. Статтю Вікіпедії ) Mozilla Firefox, зробивши запит, щоб знайти всі записи, які відповідають умові (у вашому випадку - переглянуто менше 5 разів і не відвідано в останні 120 днів).


ПЕРШИЙ НАЗАД. ЗАКРИТИ ФІРЕФОКС ПЕРШИЙ

Інструкції запускаються:


Це працює (перевірено та працює з моїм Firefox v. 29.0.1). За 12 простих кроків:

  1. Встановіть браузер баз даних SQLite

  2. Відкрий це

  3. Клацніть Відкрити базу даних

  4. Перейдіть до C:\Users\[USER]\AppData\Roaming\Mozilla\Firefox\Profiles\[PROFILE]редагування за потребою

    ПЕРЕДАЧАЙТЕ ПЕРШИЙ ФАЙЛ !!

  5. Відкрийте places.sqliteкаталог, який ви відкрили на кроці 4.

    СЕРЙОЗНО, BACKUP ПЕРШИЙ !!

  6. Перейдіть на вкладку Execute SQL.

  7. Введіть це:

    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. Замініть x(2)на 5 (у вашому прикладі)

  9. Замініть 2014-04-01та встановіть 2014-05-30потрібні дати

  10. Натисніть синю кнопку відтворення.

  11. Перевірте, чи відображаються веб-сайти правильні (вони повинні бути, але перевірте!)

  12. Якщо вони є, то замініть перші два рядки вищевказаного коду на:

    DELETE
    FROM moz_places
    

    тож ваш код виглядає приблизно так:

    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)
    

Зроблено! Закрийте програму та натисніть кнопку "Зберегти" при закритті.

Інструкції закінчуються


Що з last_visit_date?

Last_visit_date виглядає зашифрованим моїм неозброєним оком, але я не можу бачити, в який спосіб.

Я б не назвав це "зашифрованим" (хоча я не погоджуюся з тим, що він виглядає зашифрованим). Це просто в іншій «системі». Дата вказана у Unixчасовій системі (або Epoch/ POSIX). Це кількість секунд, що минули з 00:00:00 (UTC) 1 січня 1970 року. 1 година - 3600 секунд. 1 рік становить 31556926 днів.

Для отримання додаткової інформації. перегляньте цю статтю у Вікіпедії або цей веб-сайт, який перетворює час у епоху та назад.


Знімки екрана (ігноруйте запити SQL на цих зображеннях, вони неправильні. Вони в основному підказують, де шукати)

Веб-переглядач баз даних SQLite Веб-переглядач баз даних SQLite Веб-переглядач баз даних SQLite

Завдяки ;):


Для додаткової безпеки ви можете зробити копію (резервну копію) бази даних, перш ніж це зробити.
Боб

Крім того, якщо ви хочете зробити це належним чином, ви також повинні видалити moz_placesвсі записи, у яких більше немає відповідних place_id.
Боб

Вибачте, я мав на увазі видалити зmoz_historyvisits
Боб

@Bob І place_idв moz_historyvisits= idв moz_places?
ᔕᖺᘎᕊ

Має бути. Є два способи впоратися з цим: 1. видалити з moz_historyvists першого ( delete from moz_historyvisits as hv left join moz_places as p on hv.place_id = p.id where p.visit_count...) або 2. після очищення moz_placesви можете видалити moz_historyvisitsбудь-які записи, у яких немає відповідного запису . Я віддаю перевагу особистому варіанту 1. Не використовуйте його без тестування; мій SQL досить іржавий, і я вчився за допомогою pgsql, а не sqlite. Ви насправді зможете видалити з обох відразу, тест лем.
Боб
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.