Firefox 29 - como excluo entradas do histórico visitadas menos de x vezes

11

Contexto:

Estou usando meu perfil do Firefox há alguns anos. Meu arquivo de histórico se tornou enorme, naturalmente. Eu tenho o Firefox Sync configurado entre meu PC principal e meu laptop.

Configurações de HW:

  • PC: i5-3450, 8 GB de RAM DDR3, SSD Crucial M4 de 128 GB
  • laptop: Pentium SU4100, 4 GB de RAM DDR3, disco rígido WD 5400 rpm

O acesso às entradas do histórico ao digitar na Barra Awesome no meu desktop leva muito tempo, apesar da configuração decente, o laptop é ainda mais lento. A experiência não responde.

Imaginei que, se esclarecesse um pouco a história, evitaria criar um novo perfil para acelerar as coisas.

A questão em si:

Ilustrar:

história

Existe uma maneira de excluir todas as entradas do histórico que foram visitadas menos de x (digamos 5) vezes e, ao mesmo tempo, a visita recente tem menos de y (digamos 120) dias?

o arquivo de histórico é algum tipo de banco de dados SQL, mas não tenho muita certeza de como os dados são salvos, se houver uma "maneira segura" de editá-lo e como será a consulta para fazer o que eu preciso.


Continuei navegando pelas perguntas anteriores do Superusuário para ver se encontrava informações relevantes.

No meu diretório de perfil do Firefox, há um arquivo chamado places.sqlite. A abertura com o sqlite revela (entre outros) as tabelas moz_placese moz_historyvisits. Parece que moz_historyvisitsusa o principal de moz_placespara se referir aos URLs.

Como não estou familiarizado com bancos de dados, não entendo realmente como as duas tabelas mencionadas na citação estão relacionadas.

captura de tela de uma parte das tabelas places_sqlite

Notei que o arquivo visit_countestá em um formato padrão, facilitando o trabalho. Os last_visit_dateolhares criptografados a meu olho nu, mas não consigo ver de que maneira.

Espero que ajude, estou no meu juízo.

lousyuser
fonte
Para responder a uma de suas perguntas, de acordo com essa resposta , o Firefox de fato usa o SQL. Eu recomendo disparar o SQLLite e ir a partir daí.
AStopher
O que você tentou até agora? Antes de prosseguir, você pode confirmar que um novo perfil do Firefox fornece uma experiência mais rápida, especialmente no laptop?
and31415
1
Acabei de publicar uma resposta que contém algumas informações novas. Quanto ao snappiness, não, eu não tentei, mas lembro-me claramente que o Awesome Bar era muito mais snappier quando o perfil era bastante novo (e o histórico organizado por muitas entradas), tanto no laptop quanto na área de trabalho.
Lousyuser
Você viu alguma melhoria de desempenho depois de limpar seu histórico? - edit: oops: vejo que você comentou a resposta selecionada e notou uma grande melhoria.
Ndemou

Respostas:

9

Com alguma pesquisa (veja no final para 'referências'), eu vim com essa (tipo de) solução simples:


BACKUP PRIMEIRO. FECHAR FIREFOX PRIMEIRO


Isso requer que você edite o Banco de Dados SQLite (um banco de dados SQL independente; consulte o artigo da Wikipedia ) do Mozilla Firefox, fazendo uma consulta para encontrar todos os registros que satisfazem a condição (no seu caso - visualizada menos de 5 vezes e não visitada no últimos 120 dias).


BACKUP PRIMEIRO. FECHAR FIREFOX PRIMEIRO

Início das instruções:


Isso funciona (testado e funcionando com o meu Firefox v. 29.0.1). Em 12 etapas fáceis (ish):

  1. Instalar o navegador de banco de dados SQLite

  2. Abra

  3. Clique em Abrir banco de dados

  4. Navegue para a C:\Users\[USER]\AppData\Roaming\Mozilla\Firefox\Profiles\[PROFILE]edição conforme necessário

    BACKUP DO ARQUIVO SEGUINTE PRIMEIRO !!

  5. Abra places.sqliteno diretório que você abriu na etapa 4.

    SÉRIO, BACKUP PRIMEIRO !!

  6. Clique na guia Executar SQL.

  7. Digite o seguinte:

    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. Substitua x(2)para 5 (no seu exemplo)

  9. Substitua 2014-04-01e 2014-05-30pelo intervalo de datas desejado

  10. Pressione o botão azul de reprodução.

  11. Verifique se os sites exibidos estão corretos (deveriam estar, mas verifique!)

  12. Se estiverem, substitua as duas primeiras linhas do código acima por:

    DELETE
    FROM moz_places
    

    para que seu código se pareça com:

    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)
    

FEITO! Feche o programa e clique em Salvar ao fechar.

Fim das instruções


E o que dizer last_visit_date?

O last_visit_date parece criptografado a olho nu, mas não consigo ver de que maneira.

Eu não chamaria isso de 'criptografado' (embora eu não discorde de que parece criptografado). É apenas em outro 'sistema'. A data está no Unixsistema de horas (ou Epoch/ POSIX). É o número de segundos que se passaram desde 00:00:00 (UTC) em 1º de janeiro de 1970. 1 hora é 3600 segundos. 1 ano é 31556926 dias.

Para mais informações. consulte este artigo da Wikipedia ou este site que converte o tempo de e para a época.


Capturas de tela (ignore as consultas SQL nessas imagens, elas estão erradas. Estas são para lhe dizer principalmente onde procurar)

Navegador de banco de dados SQLite Navegador de banco de dados SQLite Navegador de banco de dados SQLite

Graças a ;):

ᔕᖺᘎᕊ
fonte
Para maior segurança, convém fazer uma cópia (backup) do banco de dados antes de fazer isso.
29414 Bob
Além disso, se você quiser fazer isso corretamente, também deverá excluir de moz_placesquaisquer entradas que não tenham mais um correspondente place_id.
29414 Bob
Desculpe, eu quis dizer excluir demoz_historyvisits
Bob
@ Bob E place_idem moz_historyvisits= idin moz_places?
ᔕᖺᘎᕊ
Deveria estar. Há duas maneiras de lidar com isso: 1. excluir da moz_historyvists primeira ( delete from moz_historyvisits as hv left join moz_places as p on hv.place_id = p.id where p.visit_count...) ou 2. após a limpeza moz_places, você pode excluir de moz_historyvisitsqualquer entrada que não possua a entrada correspondente . Eu prefiro a opção 1 pessoalmente. Não o use sem testar; meu SQL está um pouco enferrujado e aprendi com pgsql, não com sqlite. Você pode, na verdade, ser capaz de excluir os dois ao mesmo tempo, teste de lemme.
29414 Bob