BLog

ImprintImpressum
PrivacyDatenschutz
DisclaimerHaftung
Downloads 

Nachladen eines Safari-Shortcut-Icons unter macOS erzwingen

Web-Entwickler stolpern häufig über die diversen Fallstricke, die durch das Caching der Web-Browser ausgelegt werden. Einer dieser Fallstricke ist der Shortcut-Icon-Cache von Safari. Man hat also sein schönes neues favicon.ico auf seiner Webseite hinterlegt, und Safari weigert sich einfach dieses nachzuladen, so daß man u.U. einige Tage bis Wochen warten muß, bis das neue Icon in seinem vollen Glanze im Favoriten-Menü erscheint - nun, es sei denn man führt das folgende Shell-Script aus, welches im Cache vorhandene Icons einer Webseite selektiv entfernt, und man auf diese Weise das Nachladen neuer Icons durch Safari erzwingen kann.

Update: Ich habe soeben (7.2.2020) festgestellt, daß unter macOS 10.14 und Safari 13.05 das folgende nur funktioniert, wenn man die sogenannte System Integrity Protection deaktiviert. Dazu startet man den Mac von seiner Wiederherstellungs-Partition und gibt im Terminal derselben den Befehl csrutil disable ein.

Das folgende Script speichert man unter ~/bin/rmfavicon.sh ab:

#!/bin/sh

/usr/bin/sqlite3 "$HOME/Library/Safari/Favicon Cache/favicons.db" "DELETE FROM rejected_resources WHERE page_url like '%$1%';"
uuidlist=`/usr/bin/sqlite3 -list "$HOME/Library/Safari/Favicon Cache/favicons.db" "SELECT DISTINCT uuid FROM icon_info WHERE url like '%$1%' ORDER BY uuid;"`

for uuid in $uuidlist ; do
   /bin/rm -f "$HOME/Library/Safari/Favicon Cache/favicons/$(/sbin/md5 -qs $uuid | /usr/bin/tr '[:lower:]' '[:upper:]')"
   /usr/bin/sqlite3 "$HOME/Library/Safari/Favicon Cache/favicons.db" "DELETE FROM page_url WHERE uuid like '$uuid';"
   /usr/bin/sqlite3 "$HOME/Library/Safari/Favicon Cache/favicons.db" "DELETE FROM icon_info WHERE uuid like '$uuid';"
done

Mit dem folgenden Kommando macht man das Script ausführbar:

chmod +x ~/bin/rmfavicon.sh

Um nun ein Shortcut-Icon einer Webseite von z.B. www.example.com aus dem Safari-Cache zu entfernen, beendet man Safari und setzt im Terminal das folgende Kommando ab:

~/bin/rmfavicon.sh www.example.com

Danach startet man den Computer neu, und endlich sollte Safari das alte Shortcut-Icon vergessen haben.

Copyright © Dr. Rolf Jansen - 2018-11-15 20:57:49

Diskussion auf Twitter: 1082834689637928960