Как я могу удалить старую историю из Google Chrome?

Я работаю на ноутбуке со скромным жестким диском, и 500 МБ занято с файлами Google Chrome "History Index" и "Thumbnails". Некоторым из этих файлов год. Chrome предлагает мне удалить недавнюю историю, но я хочу наоборот: я хочу удалить старую историю. (В идеале я хотел бы удалить наименее использованную информацию из истории, но я не ожидаю, что смогу это сделать.)

У кого-нибудь есть идеи? Я использую стандартный Debian google-chrome-beta пакет.

3 ответа

Решение

Стыдно гуглу, пока нет пути.

Кроме того, все базы данных Chrome - это просто файлы sqlite3, и вы можете использовать sqlite3 для очистки ненужных записей. Сначала установите sqlite3 клиент (sudo apt-get install sqlite3), а затем перейдите в конфигурацию Chrome (должно быть .config/chrome/Default).

Вот фрагмент SQL, который удаляет старые URL из истории (работает с базами данных History, Archived History):

delete from urls where last_visit_time <= (strftime('%s',(select 
   max(last_visit_time)/10000000 from urls),'unixepoch','-1 days')*10000000);

Вот еще один, который, вероятно, будет работать на Thumbnails база данных:

attach database 'History' as history;
delete from thumbnails where last_updated <= (strftime('%s',(select 
   max(last_visit_time)/10000000 from history.urls),'unixepoch','-1 days')
   *10000000);

Это, вероятно, будет работать на History Index -es:

attach database 'History' as history;
delete from info i, pages_content pc where i.time <= (strftime('%s',(select
   max(last_visit_time)/10000000 from history.urls),'unixepoch','-1 days')*
   10000000) and i.rowid = pc.rowid;

Конечно, вы должны сделать резервную копию всех баз данных, потому что у вас может быть другая версия Chrome, или я могу случайно пропустить символ и т. Д.

Поскольку Chrome хранит свое время в каком-то странном формате, основанном на эпохе UNIX (но умноженном на 10^7 и перенесенном в будущее), дата возврата системных функций не может быть использована; вместо этого используется дата последнего открытия страницы.

Вы можете заменить -1 days с любым интервалом, который вы хотите; Вы можете прочитать о разрешенных модификаторах в документации по SQLite (кратко: -N days, -N months).

После удаления ненужных данных, вы можете захотеть выдать vacuum; команда, которая сжимает базу данных еще дальше.

(Это не ответ, но я оставляю это как предупреждение.)

Я видел два расширения, которые утверждают, что делают это каким-то образом, но ни одно из них не работает.

Однако эти (и я ожидаю, что другие расширения) только вызов chrome.history.deleteRange - если вам повезет, с разумными параметрами. Согласно документации:

Удаляет все элементы в указанном диапазоне дат из истории. Страницы не будут удалены из истории, если все посещения не попадают в диапазон.

И на практике я не вижу никакого эффекта, кроме (я думаю) страниц, не появляющихся на странице истории. В частности, файл базы данных истории по-прежнему большой, и Chrome по-прежнему выполняет много операций ввода-вывода. Так что я подозреваю (из очень случайного наблюдения с Chromium 9 beta r68937), что chrome.history.deleteRange влияет только на то, что видно в chrome://history страница, а не то, что хранится на диске и влияет на такие вещи, как завершение строки URL.

Все эти ответы были полезны, но устарели. Я нашел и использую плагин "History Limiter Custom", и он работает безупречно.

History Limiter Custom - более новая версия "History Limiter", которая имеет лучшую производительность и в основном не содержит ошибок.

https://chrome.google.com/webstore/detail/history-limiter-custom/ibpfkplbhnbiklpjacjbaelahebmbmpp/related

Другие вопросы по тегам