19

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

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

3 ответа3

13

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

Кроме того, все базы данных 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; команда, которая сжимает базу данных еще дальше.

3

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

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

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

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

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

0

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .