# Configuração do Favicon no Django

> **Última atualização:** 21/02/2026

## Implementação Atual

Foi implementada uma view específica para servir o `favicon.ico` diretamente na URL `/favicon.ico`.

### Arquivo: `core/urls.py`

```python
@cache_control(max_age=86400)  # Cache por 24 horas
def favicon_view(request):
    """Serve favicon.ico with proper caching"""
    try:
        favicon_path = os.path.join(settings.STATICFILES_DIRS[0], 'favicon.ico')
        if os.path.exists(favicon_path):
            return FileResponse(
                open(favicon_path, 'rb'), 
                content_type='image/x-icon'
            )
        else:
            raise Http404("Favicon not found")
    except Exception:
        raise Http404("Favicon not found")

# URL pattern
path('favicon.ico', favicon_view, name='favicon'),
```

## Características da Implementação

### ✅ **Vantagens:**
1. **URL Limpa**: Acessível diretamente em `/favicon.ico`
2. **Cache Otimizado**: Cache de 24 horas para melhor performance
3. **Tratamento de Erros**: Retorna 404 se o arquivo não existir
4. **Content-Type Correto**: Define `image/x-icon` adequadamente
5. **Performance**: Serve o arquivo diretamente sem processamento adicional

### 🔧 **Como Funciona:**
1. O navegador solicita `/favicon.ico`
2. A view `favicon_view` é executada
3. O arquivo é lido de `static/favicon.ico`
4. Retorna o arquivo com headers apropriados

## Outras Opções Disponíveis

### **Opção 2: Usando Static Files (Mais Simples)**
```python
# Em urls.py
from django.views.generic import RedirectView

urlpatterns = [
    path('favicon.ico', RedirectView.as_view(url='/static/favicon.ico'), name='favicon'),
]
```

### **Opção 3: Usando Template Tag**
```html
<!-- Em templates -->
<link rel="icon" type="image/x-icon" href="{% static 'favicon.ico' %}">
```

### **Opção 4: Configuração no HTML (Recomendada para SEO)**
```html
<!-- Adicionar nos templates base -->
<head>
    <link rel="icon" type="image/x-icon" href="/favicon.ico">
    <link rel="shortcut icon" type="image/x-icon" href="/favicon.ico">
    <link rel="apple-touch-icon" href="/static/apple-touch-icon.png">
</head>
```

## Configuração nos Templates

Para garantir que o favicon seja carregado corretamente, adicione nos templates base:

### **Template Base Principal**
```html
<!-- Em templates/layouts/base-default.html -->
<head>
    <!-- ... outros meta tags ... -->
    <link rel="icon" type="image/x-icon" href="/favicon.ico">
    <link rel="shortcut icon" type="image/x-icon" href="/favicon.ico">
</head>
```

### **Template do Wiki**
```html
<!-- Em apps/lineage/wiki/templates/wiki/base-wiki.html -->
<head>
    <!-- ... outros meta tags ... -->
    <link rel="icon" type="image/x-icon" href="/favicon.ico">
    <link rel="shortcut icon" type="image/x-icon" href="/favicon.ico">
</head>
```

## Verificação

### **Teste Manual:**
1. Acesse `http://seudominio.com/favicon.ico`
2. Deve retornar o arquivo de ícone
3. Verifique os headers de resposta (cache, content-type)

### **Teste no Navegador:**
1. Abra o DevTools (F12)
2. Vá na aba Network
3. Recarregue a página
4. Procure por `favicon.ico` na lista de requisições
5. Verifique se retorna status 200

## Troubleshooting

### **Problema: Favicon não aparece**
- Verifique se o arquivo existe em `static/favicon.ico`
- Confirme se a URL `/favicon.ico` está funcionando
- Verifique se o template base inclui a tag `<link>`

### **Problema: Cache não funciona**
- Verifique se o decorator `@cache_control` está aplicado
- Teste em modo incógnito
- Limpe o cache do navegador

### **Problema: Erro 404**
- Confirme que o arquivo existe no caminho correto
- Verifique as permissões do arquivo
- Teste a view diretamente

## Performance

### **Otimizações Implementadas:**
- ✅ Cache de 24 horas
- ✅ Content-Type correto
- ✅ Tratamento de erros
- ✅ Servir arquivo diretamente

### **Métricas Esperadas:**
- **Tempo de Resposta**: < 50ms
- **Tamanho**: Depende do arquivo (geralmente 1-50KB)
- **Cache Hit Rate**: > 95% após primeira visita

## Manutenção

### **Atualizar Favicon:**
1. Substitua o arquivo `static/favicon.ico`
2. O cache será invalidado automaticamente após 24 horas
3. Para forçar atualização, use `Ctrl+F5` no navegador

### **Monitoramento:**
- Verifique logs de erro para 404s no favicon
- Monitore performance da view
- Acompanhe uso de cache 
---

[ Voltar ao Índice](../INDEX.md)

