yasuoza diary

web and life

Chromeのfaviconのキャッシュをクリアする

いろんなフレームワークでWebアプリケーションを開発していると、localhost:3000やlocalhost:8080などで動作検証することが多くなります。 その検証ページで前のアプリケーションのfaviconが表示され続けてとても邪魔だったので、調べたら特定のURLのfaviconのキャッシュだけ削除する方法が紹介されてました。

chromeで特定のfaviconのキャッシュを削除する - hokaccha.hamalog v2

faviconのキャッシュはsqliteで管理されているので、そこからデータを消すだけでOKらしい。

実際にやってみると確かに消えている。ただし、Chromeを終了した状態じゃないとFaviconsデータベースがロックされていて削除できなかったので、削除するときはあらかじめChromeを終了しておく。

いちいちsqlite3からSQL文発行するの面倒だったので、スクリプト書きました。 URLにlocalhostが含まれるもののfaviconを削除するようにしました。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
require 'sqlite3'

library_path = File.join(ENV['HOME'], '/Library/Application Support/Google/Chrome/Default')
db_file_path = File.join(library_path, 'Favicons')

db = SQLite3::Database.new db_file_path

begin
  command = "delete from favicons where url like '%localhost%'"
  p "Will execute: #{command}"
  db.execute(command)
  p "Done: #{command}"
rescue SQLite3::BusyException => ex
  print <<-ERROR_DOC
  Is Chrome.app runnig?
  Then quit Chrome.app first.
  ERROR_DOC
end

手元のchrome v.21で動作確認しました。