Co to jest favicon.ico

Tajemniczy plik

Po uruchomieniu mojego serwisu, koledzy zauważyli w logach Apache sporą listę wstawek typu:

[Mon Jul 31 16:16:43 2000] [error] File does not exist: /home/WWW/home/favicon.ico

Padły dwie hipotezy:

  • ktoś testuje jakiś nowy exploit o którym nie słyszeliśmy;
  • Kasperski coś napsuł (poza wystawieniem mojego serwisu nic specjalnego się nie zmieniło).

Prywatnie obstawiałem, że albo gdzieś mam jakiś lewy IMG, albo jest to jakaś nie znana mi cecha Zope. Robiłem różne dziwne sztuczki aż wreszcie ktoś z listy Zope mnie oświecił.

Internet Explorer 5, gdy ktoś dodaje stronę do 'Ulubionych', próbuje ściągać z danego serwera WWW plik favicon.ico - aby użyć go jako ikonki w menu 'Ulubione'!

Z moich obserwacji wynika, że najpierw następuje próba pobrania pliku o tej nazwie z katalogu, w którym znajduje się bookmarkowana strona - a gdy się to nie powiedzie, z głównego katalogu serwera.

Mój pierwszy wniosek z całej historii: nawet, gdy coś dziwnego dzieje się na Linuxie, winny może być Microsoft.

Jak z tego skorzystać

Po chwili irytacji stwierdziłem, że jest to cecha całkiem użyteczna. Po pierwsze mam informację, kto bookmarkował moje strony (oczywiście jedynie z grona użytkowników przeglądarek używających tej cechy), po drugie zrobienie odpowiednich ikonek nie jest szczególnie bolesne a w menu IE wygląda to nawet estetycznie.

Plik favicion.ico powinien być zwykłą Windowsową ikoną o rozmiarze 16x16 - i właściwie tyle. Dzięki pomocy jednego z kolegów (Windows są mi dosyć obce), zarówno http://www.softax.com.pl jak http://www.softax.com.pl/prywatne/marcink zostały odpowiednio wyposażone a ja od czasu do czasu robię grep favicon /var/log/apache/access.log (wyniki dają mi podstawy do pewnej satysfakcji).

Więcej informacji można znaleźć pod adresem http://msdn.microsoft.com/workshop/Author/dhtml/howto/ShortcutIcon.asp.

Lepszy sposób zapisu

Można użyć innej niż favicon.ico nazwy. Robi się to tak (na każdej stronie):

<HEAD>
  <LINK REL="SHORTCUT ICON" HREF="http://www.mydomain.com/mydir/myicon.ico">
  <TITLE>My Title</TITLE>
</HEAD>

Powyższy zapis może być przydatny gdy chcemy odróżniać polecenia bookmarkowania różnych stron z jednego serwisu. Ponadto niektóre przeglądarki (np. najnowsza mozilla) pobierają ikonkę tylko gdy jest zadana explicite w ten sposób, domyślnej nazwy nie próbują. Powyższy zapis zabezpiecza też przed problemami typu 'wziął favicon.ico z głównego katalogu zamiast z bieżącego'.

Nie tylko Internet Explorer

Pomysł się przyjął i jest obsługiwany przez coraz więcej przeglądarek. Faviconki intensywnie wykorzystuje konqueror (pokazując je nie tylko na liście zakładek ale też w okienku URL a w nowszych wersjach KDE także jako ikonkę na pasku zadań). Ostatnio pojawiły się też w mozilli oraz galeonie. Innymi słowy - po prostu warto korzystać.

Ikonki przyjaźniejsze Windowsom

Pod Windows, ikonki są być używane nie tylko do wyświetlania w pasku przeglądarki i wśród zakładek ale także do oznaczania skrótów na pulpicie (uzyskiwanych np. przez złapanie myszą URLa w pasku przeglądarki i przeciągnięcie na pulpit). W ich wypadku obrazek jest większy i przeskalowana ikonka 16x16 nie prezentuje się najlepiej. Można temu zaradzić robiąc ikonkę zawierającą dwa warianty obrazka - 16x16 i 32x32 (format ico pozwala na to). Przeglądarka użyje obrazka 16x16, na pulpicie pojawi się wariant 32x32. Koszt? Cóż, mamy plik wielkości 1078 bajtów zamiast 318...

Ikonkę niełatwo zmienić

Na pewno Internet Explorer a być może i inne przeglądarki działają na zasadzie 'raz ściągniętej faviconki nigdy nie odświeżamy'. Wszelkie ustawienia czasu ważności na poziomie nagłówków HTTP nie mają znaczenia. Żadne Shift-Odśwież nie pomaga. Jak Explorer raz pobrał faviconkę dla URLa http://gdzies.tam/costam, to już ma i więcej nie pobierze. Dlatego trzeba bardzo dokładnie testować ikonki przed ich puszczeniem 'w świat' a jeśli już zmiana jest konieczna, warto zmienić zarówno nazwę pliku ikonki, jak nazwę najczęściej bookmarkowanej strony.

komentarze obsługiwane przez Disqus