Tech-News: Analýza problému a návrh řešení
🔴 Zjištěné problémy
1. Obrovská velikost stránky
Soubor: _site/tech-news/index.html
Velikost: 6.4 MB
Řádky: 163,250
Důsledky:
- Pomalé načítání stránky
- Vysoká spotřeba dat
- Problémy s výkonem prohlížeče
- Špatné SEO
2. Nadměrný počet článků v kolekci
Celkem článků v _tech_news/: 2,478
Nejstarší článek: 23. září 2025
Nejnovější článek: 29. října 2025
Rozsah: více než měsíc
Rozdělení podle období:
- Dnes (30.10.): 0 článků
- Včera (29.10.): 1 článek
- Poslední týden (23-29.10.): 263 článků
- Celkem: 2,478 článků
3. Chybějící filtrace podle data
Layout tech_news_index.html (řádky 26-29):
Problém:
- ❌ Načítá VŠECH 2,478 článků z kolekce
- ❌ Žádná filtrace podle data (24 hodin)
- ❌ Jen limit 18 článků, ale po načtení všech
- ❌ Jekyll musí při každém buildu zpracovat všechny články
4. Neefektivní build proces
Současný stav:
- Jekyll načte všech 2,478 článků do paměti
- Seřadí je podle publishedAt
- Vezme prvních 18
- Vygeneruje 6.4 MB HTML soubor
Výsledek:
- Dlouhý build čas
- Vysoká spotřeba paměti
- Neefektivní využití zdrojů
💡 Navrhovaná řešení
Řešení A: Cleanup + Filtrace (DOPORUČENO)
1. Automatický cleanup starých článků
Vytvořit skript .github/scripts/cleanup_old_tech_news.py:
#!/usr/bin/env python3
"""
Cleanup starých tech-news článků
Ponechá pouze články za posledních 7 dní
"""
from pathlib import Path
from datetime import datetime, timedelta, timezone
import re
def cleanup_old_articles(days_to_keep=7):
    tech_news_dir = Path('_tech_news')
    cutoff_date = datetime.now(timezone.utc) - timedelta(days=days_to_keep)
    removed_count = 0
    kept_count = 0
    for article_file in tech_news_dir.glob('*.md'):
        if article_file.name == 'index.md':
            continue
        # Extrahovat datum z názvu souboru (YYYY-MM-DD)
        match = re.match(r'(\d{4}-\d{2}-\d{2})-', article_file.name)
        if not match:
            continue
        article_date = datetime.fromisoformat(match.group(1)).replace(tzinfo=timezone.utc)
        if article_date < cutoff_date:
            article_file.unlink()
            removed_count += 1
        else:
            kept_count += 1
    print(f"✅ Cleanup dokončen")
    print(f"   Smazáno: {removed_count} článků")
    print(f"   Ponecháno: {kept_count} článků")
    return removed_count, kept_count
if __name__ == "__main__":
    cleanup_old_articles(days_to_keep=7)
2. Přidat cleanup do GitHub Actions workflow
.github/workflows/tech-news.yml - přidat před build:
- name: Cleanup old tech-news articles
  run: python .github/scripts/cleanup_old_tech_news.py
3. Filtrovat v layoutu podle data
Aktualizovat _layouts/tech_news_index.html (řádky 26-34):
Výhody:
- ✅ Zobrazí jen relevantní články (24-48 hodin)
- ✅ Automatický cleanup snižuje velikost kolekce
- ✅ Zachovává historii v denních stránkách
- ✅ Snížení velikosti HTML na ~100-200 KB
Řešení B: Redirect na denní stránku
Změnit /tech-news/ na redirect:
_pages/tech-news.md:
---
layout: tech_news_redirect
title: Technologické zprávy
permalink: /tech-news/
---
_layouts/tech_news_redirect.html:
---
layout: default
---
<script>
// Přesměrovat na nejnovější denní stránku
const today = new Date();
const yyyy = today.getFullYear();
const mm = String(today.getMonth() + 1).padStart(2, '0');
const dd = String(today.getDate()).padStart(2, '0');
const dateStr = `${yyyy}-${mm}-${dd}`;
window.location.href = `/tech-news/${dateStr}/`;
</script>
<div style="text-align: center; padding: 3rem;">
  <p>Přesměrovávám na dnešní zprávy...</p>
  <p><a href="/tech-news/2025-10-31/">Pokračovat ručně</a></p>
</div>
Výhody:
- ✅ Nejjednodušší řešení
- ✅ Žádné načítání velkých kolekcí
- ✅ Denní stránky už existují
- ✅ Okamžité zobrazení
Nevýhody:
- ⚠️ Žádný přehled napříč dny
- ⚠️ Nutný JavaScript
Řešení C: Kombinované (NEJVÍCE ROBUSTNÍ)
Kombinace řešení A + B:
- Cleanup starých článků (7 dní)
- Hlavní stránka zobrazuje 18 nejnovějších (48 hodin)
- Fallback redirect pokud nejsou žádné články za 48 hodin
- Link na archiv pro přístup k denním stránkám
Implementace:
1. Cleanup script (stejný jako Řešení A)
2. Aktualizovaný layout tech_news_index.html:
  
  
  <!-- Navigace -->
  <div class="tech-news-navigation">
    <a href="/tech-news/archive/">📚 Archiv</a>
  </div>
  <!-- Články... -->
3. Stránka archivu /tech-news/archive/:
- Seznam denních stránek
- Kalendářové zobrazení
- Filtr podle měsíce
📊 Srovnání řešení
| Kritérium | Řešení A | Řešení B | Řešení C | 
|---|---|---|---|
| Velikost HTML | ~100-200 KB | ~10 KB (redirect) | ~100-200 KB | 
| Build čas | Střední | Rychlý | Střední | 
| Funkčnost | ✅ Plná | ⚠️ Omezená | ✅ Plná | 
| Uživatelský zážitek | ✅ Dobrý | ⚠️ Redirect delay | ✅ Výborný | 
| Údržba | Střední | Nízká | Vyšší | 
| Implementace | ⚙️ Jednoduchá | 🚀 Velmi jednoduchá | ⚙️ Složitější | 
🎯 Doporučení
Pro okamžité řešení: Řešení A (Cleanup + Filtrace)
- ✅ Řeší hlavní problémy
- ✅ Rychlá implementace
- ✅ Zachovává funkcionalitu
- ✅ Automatický maintenance
Pro dlouhodobé řešení: Řešení C (Kombinované)
- ✅ Nejrobustnější
- ✅ Nejlepší UX
- ✅ Archiv pro historii
- ✅ Fallback mechanismy
📋 Implementační kroky
Krok 1: Cleanup script
- Vytvořit .github/scripts/cleanup_old_tech_news.py
- Otestovat lokálně
- Přidat do workflow
Krok 2: Aktualizovat layout
- Upravit _layouts/tech_news_index.html
- Přidat filtraci podle data
- Otestovat s malým počtem článků
Krok 3: Deploy
- Commitnout změny
- Pushnout do GitHubu
- Ověřit workflow
Krok 4: Monitoring
- Zkontrolovat velikost HTML
- Měřit build čas
- Sledovat počet článků v kolekci
🔧 Technické detaily
Jekyll Collection Limits
- Jekyll nemá vestavěný limit pro kolekce
- Všechny dokumenty se načítají do paměti
- Filtrace Liquid je pomalá pro velké kolekce
Liquid Date Filtering
Cleanup Considerations
- 7 dní: Optimální pro archiv + aktuální zobrazení
- Denní stránky: Zachovávají historii
- Build čas: ~50% redukce při cleanup
📈 Očekávané výsledky
Po implementaci Řešení A:
- Velikost HTML: 6.4 MB → ~150 KB (-98%)
- Počet článků: 2,478 → ~100-200 (-92%)
- Build čas: ~3-5 min → ~1-2 min (-50%)
- Načítání stránky: ~5-10s → <1s (-90%)
Po implementaci Řešení C:
- Stejné výsledky jako A
- Plus: Archiv, lepší navigace, fallback

 |
 |