# ════════════════════════════════════════════════════════════════════
# Troço Play — tuning do Apache/Passenger (itens 1.3 e 1.4)
# ════════════════════════════════════════════════════════════════════
#IMPORTANTE: se o cPanel retornar erro 500 ao salvar, o Apache nao permite
#estas diretrizes via .htaccess neste plano. Nesse caso, remova o bloco
#<IfModule mod_passenger.c> e aplique pelo gerenciador de processos do
#cPanel (MultiPHP/Passenger) ou abra chamado para o suporte do host.
#Todos os blocos estao protegidos por <IfModule>, entao diretriz ausente
#nunca quebra o site.

# ─── 1.4 - Timeout e pooling do Passenger ──────────────────────────
<IfModule mod_passenger.c>
    # Mantem processos ociosos vivos por mais tempo (evita "cold start"
    # a cada visita e o consequente 500/timeout em picos).
    PassengerPoolIdleTime 600

    # Recicla um processo apos muitas requisicoes, liberando memoria sem
    # matar processos cedo demais.
    PassengerMaxRequests 5000

    # Garante um piso de processos prontos para absorver picos.
    PassengerMinInstances 2

    # Tempo maximo de subida de um processo (evita 500 por startup lento).
    PassengerStartTimeout 120

    # Tempo que um processo pode ficar ocupado numa requisicao antes de ser
    # considerado travado. Aumenta tolerancia a rotinas longas (import M3U,
    # EPG, ffmpeg) sem derrubar o worker.
    PassengerProcessTimeout 600

    # Fila: em vez de recusar conexoes imediatamente em pico, enfileira.
    PassengerMaxRequestQueueSize 100
</IfModule>

# ─── 1.3 - Cache HTTP no servidor (reforca os headers do Flask) ────
<IfModule mod_expires.c>
    ExpiresActive On
    # Imagens: 30 dias
    ExpiresByType image/png "access plus 30 days"
    ExpiresByType image/jpeg "access plus 30 days"
    ExpiresByType image/jpg "access plus 30 days"
    ExpiresByType image/gif "access plus 30 days"
    ExpiresByType image/webp "access plus 30 days"
    ExpiresByType image/svg+xml "access plus 30 days"
    ExpiresByType image/x-icon "access plus 30 days"
    # CSS e JavaScript: 7 dias
    ExpiresByType text/css "access plus 7 days"
    ExpiresByType application/javascript "access plus 7 days"
    ExpiresByType text/javascript "access plus 7 days"
    # Fontes
    ExpiresByType font/woff2 "access plus 7 days"
    ExpiresByType font/woff "access plus 7 days"
</IfModule>

<IfModule mod_headers.c>
    # Garante Cache-Control mesmo sem mod_expires
    <FilesMatch "\.(png|jpg|jpeg|gif|webp|svg|ico)$">
        Header set Cache-Control "public, max-age=2592000, immutable"
    </FilesMatch>
    <FilesMatch "\.(css|js|mjs)$">
        Header set Cache-Control "public, max-age=604800, immutable"
    </FilesMatch>
</IfModule>

# ─── Compressao (gzip) para HTML/CSS/JS/JSON ───────────────────────
<IfModule mod_deflate.c>
    AddOutputFilterByType DEFLATE text/html text/plain text/xml
    AddOutputFilterByType DEFLATE text/css application/javascript application/x-javascript
    AddOutputFilterByType DEFLATE application/json image/svg+xml
</IfModule>

# ─── MIME types extras (WebP, APK) ─────────────────────────────────
<IfModule mod_mime.c>
    AddType image/webp .webp
    AddType application/vnd.android.package-archive .apk
</IfModule>
