Bir favicon.ico yok, ama IE her zaman bunun için bir istekte bulunuyor.
Tarayıcının sitemden favicon için bir istekte bulunmasını önlemek mümkün mü? HTML başlığında META-TAG olabilir mi?
Bir favicon.ico yok, ama IE her zaman bunun için bir istekte bulunuyor.
Tarayıcının sitemden favicon için bir istekte bulunmasını önlemek mümkün mü? HTML başlığında META-TAG olabilir mi?
Yanıtlar:
Öncelikle bir web sayfasında bir favicon'a sahip olmanın iyi bir şey olduğunu söyleyeceğim (normalde).
Bununla birlikte, her zaman arzu edilmez ve bazen geliştiricilerin ekstra yükten kaçınmak için bir yola ihtiyaçları vardır. Örneğin, bir IFRAME göstermeden bir favicon isteyebilir. En kötüsü, Chrome ve Android'de bir IFRAME, favicons için 3 istek oluşturacak:
"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
Aşağıdakiler veri URI'sini kullanır ve sahte favicon isteklerini önlemek için kullanılabilir:
<link rel="shortcut icon" href="data:image/x-icon;," type="image/x-icon">
Referanslar için buraya bakınız:
Chrome hatası / davranışı büyük olasılıkla gelecek sürümlerde düzeltilecektir.
Oy vermeniz için hata bildirimi:
GÜNCELLEME 1:
Yorumlardan (jpic) Firefox> = 25, yukarıdaki sözdizimini artık sevmiyor gibi görünüyor. Firefox 27'de test ettim ve hala Webkit / Chrome'da çalışırken çalışmıyor.
İşte tüm yeni tarayıcıları kapsaması gereken yeni tarayıcı. Safari, Chrome ve Firefox'u test ettim:
<link rel="icon" href="data:;base64,=">
Ben sadece eski IE ve IE <8 sürümleri de dataURIs sevmiyorum çünkü "rel" öznitelik değeri "kısayol" adını bıraktı. IE8'de test edilmedi.
GÜNCELLEME 2:
HTML5 ile doğrulamak için belgenize ihtiyacınız varsa bunun yerine şunu kullanın:
<link rel="icon" href="data:;base64,iVBORw0KGgo=">
<link rel="icon" type="image/png" href="data:image/png;base64,iVBORw0KGgo=">
sorunu çözüyor gibi görünüyor.
data:image/png;base64,iVBORw0KGgo=
, tarayıcıda açabilirim , favicon.ico
aka olarak kaydedebilirim . PNG dosyasını boş bırakın ve web sitesi kökünde saklayın. Sağ?
<head>
HTML dosyanızın bölümüne aşağıdaki satırı eklemeniz yeterlidir:
<link rel="icon" href="data:,">
Bu çözümün özellikleri:
href="#"
)reserves space
?
Bunu gördüğüme inanıyorum (Test etmedim veya kişisel olarak kullanmadım):
<link rel="shortcut icon" href="#" />
Benzer tecrübesi olan var mı?
DÜZENLE:
Yukarıdaki kod parçasını yeni test ettim ve zorunlu tam yenilemede, Fiddler'de hiçbir favicon isteği görülmedi. IE8 (IE7 standartları olarak uyumluluk modu) ve FF 3.6'ya karşı test ettim.
href
dinamik (önbelleğe alınmamış) bir sayfanın iki kez istenmediğinden emin olmak için önceden yüklediğiniz bazı statik (önbelleğe alınmış) kaynaklara (ör. Css veya komut dosyası) bağlantı olurdu . ( href="#"
Teknik olarak mevcut web sayfasını işaret ettiği için güvende olmak için).
Yapamazsın. Yapabileceğiniz tek şey bu görüntüyü olabildiğince küçük yapmak ve gelecekte bazı önbellek geçersiz kılma başlıklarını ( Expires
, Cache-Control
) ayarlamaktır . İşte Yahoo! favicon.ico isteklerini söylemek zorundadır .
Favicon.ico dosyasına erişimi engellemek için .htaccess veya sunucu yönergelerini kullanabilirsiniz, ancak sunucu tarayıcıya erişim reddedildi yanıtı gönderir ve bu yine de sayfa erişimini yavaşlatır.
Bir kullanıcı sitenize döndüğünde tarayıcı önbelleğinde kalmasını sağlayarak favicon.ico isteminde bulunan tarayıcıyı durdurabilirsiniz.
İlk olarak, küçük bir favicon.ico görüntüsü sağlayın, boş olabilir, ancak mümkün olduğunca küçük olabilir. 200 baytın altında siyah beyaz bir tane yaptım. Ardından, .htaccess veya sunucu yönergelerini kullanarak Expires üstbilgisini gelecekte bir veya iki ay olarak ayarlayın. Aynı kullanıcı sitenize geri döndüğünde, tarayıcı önbelleğinden yüklenir ve sitenize hiçbir istek gitmez. Sunucu günlüklerinde artık 404 yok.
Tam bir Apache sunucusu veya sanal bir sunucu üzerinde kontrolünüz varsa bunu yapabilirsiniz: -
Sunucu belgesi kökü / var / www / html ise, /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>
Daha sonra tek bir favicon.ico, takma ad kullandığınızdan beri tüm sanal olarak barındırılan siteler için çalışır. Kullanıcılar ziyaret ettikten sonra bir ay boyunca tarayıcı önbelleğinden çekilir.
.Htaccess için bunun çalıştığı bildirildi (benim tarafımdan kontrol edilmedi): -
AddType image/x-icon .ico
ExpiresActive On
ExpiresByType image/x-icon "access plus 1 month"
Çok basit bir çözüm aşağıdaki kodu koymak .htaccess
. Aynı sorunu yaşadım ve sorunumu çözdü.
<IfModule mod_alias.c>
RedirectMatch 403 favicon.ico
</IfModule>
Referans: http://perishablepress.com/block-favicon-url-404-requests/
Deneyimlerimize göre, Apache'nin favicon.ico'nun isteği üzerine düşmesiyle, .htaccess dosyasındaki ek başlıkları yorumladık.
Örneğin, X-XSS Koruması "1; mode = block" başlık setine sahiptik
... ama önceden sudo a2enmod başlıklarını unutmuştuk. Gönderilen fazladan başlıkların yorumlanması, favicon.ico sorunumuzu çözdü.
Ayrıca, geliştirme için ayarlanmış birkaç sanal ana makinemiz vardı ve yalnızca http: // localhost ve /favicon.ico getirilirken 500 Dahili Sunucu Hatası ile başarısız olduk. "Curl -v http: //localhost/favicon.ico " komutunu çalıştırırsanız ve ana bilgisayar adının çözümleyici önbelleğinde bulunmadığı veya bununla ilgili bir şey hakkında bir uyarı alırsanız, sorunlarla karşılaşabilirsiniz.
Getirmemek kadar basit olabilir (bunu denedik ve işe yaramadı, çünkü kök nedenimiz farklıydı) veya garip 500 Dahili Sunucu Hata mesajlarına neden olabilecek apache2.conf veya .htaccess içindeki yönergeleri arayın.
Biz çok hızlı başarısız Apache hata günlükleri ne olursa olsun yararlı bir şey bulunamadı ve biz mod_headers yüklü unutmuştu zaman ekstra üstbilgileri ayarlama sorunu çözülene kadar bütün sabah burada ve orada küçük şeyler değiştirerek geçirdi!
Bazen bu hata, HTML'nin yorumlanmış bir kodu olduğunda ve tarayıcı bir şey aramaya çalışırken ortaya çıkar. Benim durumumda olduğu gibi ben bir web formu için flask kod yorum vardı ve ben bunu alıyordu.
2 saat geçirdikten sonra aşağıdaki şekillerde çözdüm:
1) Yeni bir python ortamı oluşturdum ve yorum yapılan HTML satırına bir hata attım, bundan önce sadece 'GET /favicon.ico HTTP / 1.1 "404' hatası atıldı
2) Bazen, aynı ada sahip python dosyası gibi yinelenen bir kodum olduğunda, bu hatayı da gördüm, bunları da kaldırmayı deneyin
Kullanabilirsin
<link rel="shortcut icon" href="http://localhost/" />
Bu şekilde sunucudan istenmez.