Saya tidak memiliki favicon.ico, tetapi IE selalu membuat permintaan untuk itu.
Apakah mungkin untuk mencegah browser membuat permintaan untuk favicon dari situs saya? Mungkin beberapa META-TAG di header HTML?
Saya tidak memiliki favicon.ico, tetapi IE selalu membuat permintaan untuk itu.
Apakah mungkin untuk mencegah browser membuat permintaan untuk favicon dari situs saya? Mungkin beberapa META-TAG di header HTML?
Jawaban:
Pertama-tama saya akan mengatakan bahwa memiliki favicon di halaman Web adalah hal yang baik (biasanya).
Namun itu tidak selalu diinginkan dan kadang-kadang pengembang membutuhkan cara untuk menghindari muatan tambahan. Misalnya, IFRAME akan meminta favicon tanpa menunjukkannya. Yang terburuk, di Chrome dan Android, IFRAME akan menghasilkan 3 permintaan untuk favicons:
"GET /favicon.ico HTTP/1.1" 404 183
"GET /apple-touch-icon-precomposed.png HTTP/1.1" 404 197
"GET /apple-touch-icon.png HTTP/1.1" 404 189
Berikut ini menggunakan data URI dan dapat digunakan untuk menghindari permintaan favicon palsu:
<link rel="shortcut icon" href="data:image/x-icon;," type="image/x-icon">
Untuk referensi lihat di sini:
Bug / perilaku Chrome mungkin akan diperbaiki di versi yang akan datang.
Inilah kiriman bug yang bisa Anda pilih:
PEMBARUAN 1:
Dari komentar (jpic) sepertinya Firefox> = 25 tidak lagi menyukai sintaksis di atas. Saya menguji pada Firefox 27 dan tidak berfungsi saat masih bekerja di Webkit / Chrome.
Jadi di sini adalah yang baru yang harus mencakup semua browser terbaru. Saya menguji Safari, Chrome, dan Firefox:
<link rel="icon" href="data:;base64,=">
Saya meninggalkan nama "jalan pintas" dari nilai atribut "rel" karena itu hanya untuk IE yang lebih lama dan versi IE <8 tidak menyukai dataURI juga. Tidak diuji pada IE8.
PEMBARUAN 2:
Jika Anda membutuhkan dokumen Anda untuk memvalidasi terhadap HTML5 gunakan ini sebagai gantinya:
<link rel="icon" href="data:;base64,iVBORw0KGgo=">
<link rel="icon" type="image/png" href="data:image/png;base64,iVBORw0KGgo=">
sepertinya menyelesaikan masalah.
data:image/png;base64,iVBORw0KGgo=
di browser, simpan sebagai favicon.ico
alias. kosongkan file PNG dan simpan di root situs web. Baik?
Cukup tambahkan baris berikut ke <head>
bagian file HTML Anda:
<link rel="icon" href="data:,">
Fitur dari solusi ini:
href="#"
)reserves space
?
Saya yakin saya sudah melihat ini (Saya belum mengujinya atau menggunakannya secara pribadi):
<link rel="shortcut icon" href="#" />
Adakah yang memiliki pengalaman serupa?
EDIT:
Saya baru saja menguji cuplikan di atas dan pada refresh penuh paksa, tidak ada permintaan favicon terlihat di Fiddler. Saya diuji terhadap IE8 (mode Compat sebagai standar IE7) dan FF 3.6.
href
tautan ke beberapa sumber daya statis (cache) yang telah Anda muat (mis. File css atau skrip) - untuk memastikan bahwa halaman dinamis (tidak-cache) tidak diminta dua kali. (Hanya agar aman karena secara href="#"
teknis menunjuk ke halaman web saat ini).
Kamu tidak bisa Yang dapat Anda lakukan adalah membuat gambar sekecil mungkin dan mengatur beberapa header pembatalan cache ( Expires
, Cache-Control
) jauh di masa depan. Inilah yang Yahoo! katakan tentang permintaan favicon.ico.
Anda dapat menggunakan .htaccess atau arahan server untuk menolak akses ke favicon.ico, tetapi server akan mengirim akses yang ditolak balasan ke browser dan ini masih memperlambat akses halaman.
Anda dapat menghentikan browser yang meminta favicon.ico ketika pengguna kembali ke situs Anda, dengan membuatnya tetap di cache browser.
Pertama, berikan gambar favicon.ico kecil, bisa kosong, tapi sekecil mungkin. Saya membuat yang hitam dan putih di bawah 200 byte. Kemudian, menggunakan .htaccess atau arahan server, atur header file Kedaluwarsa satu atau dua bulan di masa mendatang. Ketika pengguna yang sama kembali ke situs Anda, itu akan dimuat dari cache browser dan tidak ada permintaan akan pergi ke situs Anda. Tidak ada lagi 404 di log server juga.
Jika Anda memiliki kendali atas server Apache lengkap atau mungkin server virtual, Anda dapat melakukan ini: -
Jika root dokumen server adalah say / var / www / html kemudian tambahkan ini ke /etc/httpd/conf/httpd.conf:-
Alias /favicon.ico "/var/www/html/favicon.ico"
<Directory "/var/www/html">
<Files favicon.ico>
ExpiresActive On
ExpiresDefault "access plus 1 month"
</Files>
</Directory>
Maka satu favicon.ico akan berfungsi untuk semua situs virtual yang dihosting karena Anda alias. Itu akan diambil dari cache browser selama sebulan setelah pengguna mengunjungi.
Untuk .htaccess ini dilaporkan berfungsi (tidak diperiksa oleh saya): -
AddType image/x-icon .ico
ExpiresActive On
ExpiresByType image/x-icon "access plus 1 month"
Solusi yang sangat sederhana adalah meletakkan kode di bawah ini di .htaccess
. Saya memiliki masalah yang sama dan itu menyelesaikan masalah saya.
<IfModule mod_alias.c>
RedirectMatch 403 favicon.ico
</IfModule>
Referensi: http://perishablepress.com/block-favicon-url-404-requests/
Dalam pengalaman kami, dengan Apache jatuh atas permintaan favicon.ico, kami berkomentar header tambahan dalam file .htaccess.
Sebagai contoh, kami memiliki Header set X-XSS-Protection "1; mode = block"
... tapi kami lupa sudo a2enmod header sebelumnya. Mengomentari tajuk tambahan yang dikirim menyelesaikan masalah favicon.ico kami.
Kami juga memiliki beberapa host virtual yang disiapkan untuk pengembangan, dan hanya gagal dengan 500 Server Internal Kesalahan saat menggunakan http: // localhost dan mengambil /favicon.ico. Jika Anda menjalankan "curl -v http: //localhost/favicon.ico " dan mendapatkan peringatan tentang nama host yang tidak ada dalam cache penyelesai atau sesuatu seperti itu, Anda mungkin mengalami masalah.
Ini bisa sesederhana tidak mengambil (kami mencoba itu dan itu tidak berhasil, karena akar penyebab kami berbeda) atau mencari arahan di apache2.conf atau .htaccess yang mungkin menyebabkan aneh 500 pesan Kesalahan Server Internal.
Kami menemukan itu gagal begitu cepat sehingga tidak ada yang berguna dalam log kesalahan Apache apa pun dan menghabiskan sepanjang pagi mengubah hal-hal kecil di sana-sini sampai kami menyelesaikan masalah pengaturan header tambahan ketika kami lupa memiliki mod_headers dimuat!
Terkadang kesalahan ini muncul, ketika HTML memiliki beberapa kode komentar dan browser mencoba mencari sesuatu. Seperti dalam kasus saya, saya telah berkomentar kode untuk formulir web dalam termos dan saya mendapatkan ini.
Setelah menghabiskan 2 jam saya memperbaikinya dengan cara berikut:
1) Saya membuat lingkungan python baru dan kemudian melemparkan kesalahan pada baris HTML yang dikomentari, sebelum ini saya hanya dilempar kesalahan 'GET /favicon.ico HTTP / 1.1 "404'
2) Kadang-kadang, ketika saya memiliki kode duplikat, seperti file python yang ada dengan nama yang sama, maka saya juga melihat kesalahan ini, coba hapus juga
Anda bisa menggunakannya
<link rel="shortcut icon" href="http://localhost/" />
Dengan begitu sebenarnya tidak akan diminta dari server.