Firefox 29 - как удалить записи истории, посещенные менее x раз


11

Контекст:

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

HW конфиги:

  • ПК: i5-3450, 8 ГБ оперативной памяти DDR3, Crucial 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-адреса.

Поскольку я не знаком с базами данных, я не совсем понимаю, как связаны две таблицы, упомянутые в цитате.

скриншот части таблиц places_sqlite

Я заметил, что visit_countэто в стандартном формате, что облегчает работу с ним. В last_visit_dateвыглядит зашифрованы моему невооруженным глазом, но я не могу видеть , в какую сторону.

Надеюсь, что это помогает, я нахожусь в конце моего ума.


Чтобы ответить на один из ваших вопросов, согласно этому ответу , Firefox фактически использует SQL. Я рекомендую запустить SQLLite и идти оттуда.
AStopher

Что вы пробовали до сих пор? Прежде чем продолжить, можете ли вы подтвердить, что новый профиль Firefox обеспечивает более быстрое взаимодействие, особенно на ноутбуке?
и31415

1
Я только что опубликовал ответ, который содержит некоторую новую информацию. Что касается привязанности, то нет, я не пробовал, но я отчетливо помню, что Awesome Bar был намного быстрее, когда профиль был довольно новым (а история не загромождена несколькими записями), как на ноутбуке, так и на рабочем столе.
lousyuser

Итак, вы видели улучшение производительности после очистки вашей истории? - edit: oops: теперь я вижу, что вы прокомментировали выбранный ответ и заметили значительное улучшение.
ndemou

Ответы:


9

С некоторыми исследованиями (см. В конце «ссылки»), я пришел к этому (вроде) простому решению:


BACKUP FIRST. ЗАКРЫТЬ FIREFOX ПЕРВЫЙ


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


BACKUP FIRST. ЗАКРЫТЬ FIREFOX ПЕРВЫЙ

Инструкция начала:


Это работает (проверено и работает с моим Firefox v. 29.0.1). В 12 простых (иш) шагов:

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

  2. Открой это

  3. Нажмите Открыть базу данных

  4. Перейдите к C:\Users\[USER]\AppData\Roaming\Mozilla\Firefox\Profiles\[PROFILE]редактированию при необходимости

    BACKUP СЛЕДУЮЩИЙ ФАЙЛ ПЕРВЫЙ !!

  5. Откройте places.sqliteиз каталога, который вы открыли на шаге 4.

    СЕРЬЕЗНО, BACKUP FIRST !!

  6. Перейдите на вкладку «Выполнение 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 first ( 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. На самом деле вы могли бы удалить из обоих сразу, lemme test.
Боб
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.