Rozdíly

Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.

Odkaz na výstup diff

Následující verze
Předchozí verze
špatná-praxe:komprese [2017/11/29 14:16] – vytvořeno Jakub Klímekšpatná-praxe:komprese [2021/07/30 11:07] (aktuální) – [Soubor ke stažení explicitně komprimovaný pomocí gzip, bzip2 nebo jiné proudové metody] Jakub Klímek
Řádek 1: Řádek 1:
 ====== Chybně implementovaná komprese ====== ====== Chybně implementovaná komprese ======
 Cílem komprese je snížit nároky na místo na disku a na síťovou konektivitu. Cílem komprese je snížit nároky na místo na disku a na síťovou konektivitu.
-Při přenosu (otevřených) dat tak jistě svou roli (až na ty uplně nejmenší soubory) má, obzvláště proto že většina otevřených formátů je textových, a texty se komprimují dobře.+Při přenosu (otevřených) dat tak jistě svou roli (až na ty úplně nejmenší soubory) má, obzvláště protože většina otevřených formátů je textových, a texty se komprimují dobře.
 Dá se ovšem implementovat různě šikovnými způsoby a jednotlivé způsoby mají souvislosti i s metadatovým popisem distribucí datových sad a dokonce i se samotným dělením dat na datové sady. Dá se ovšem implementovat různě šikovnými způsoby a jednotlivé způsoby mají souvislosti i s metadatovým popisem distribucí datových sad a dokonce i se samotným dělením dat na datové sady.
-Jednotlivé případy si nyní rozebereme, od nejméně vhodného až po nejvhodnější.+Jednotlivé případy si nyní rozebereme, a postupně budeme volbu komprese vylepšovat od nejméně vhodné až po nejvhodnější.
  
 ===== Více souborů v ZIP (nebo jiném) archivu ===== ===== Více souborů v ZIP (nebo jiném) archivu =====
Řádek 23: Řádek 23:
 ===== Soubor ke stažení komprimovaný pomocí ZIP, 7z, RAR nebo jiné neproudové metody ===== ===== Soubor ke stažení komprimovaný pomocí ZIP, 7z, RAR nebo jiné neproudové metody =====
 Neproudová metoda komprese je taková, kde pro započetí dekomprese je třeba mít k dispozici celý soubor. Neproudová metoda komprese je taková, kde pro započetí dekomprese je třeba mít k dispozici celý soubor.
-To je v pořádku, pokud si takový soubor přinesete na USB flashce, Blu-Ray, DVD, CD nebo na disketě.+To je v pořádku, pokud si takový soubor přinesete na USB flashce, Blu-Ray, DVD, CD. 
 Otevřená data jsou ale poskytována přes Internet, kde nejužším hrdlem je kapacita síťového připojení. Otevřená data jsou ale poskytována přes Internet, kde nejužším hrdlem je kapacita síťového připojení.
 Tedy soubor se stahuje delší dobu, a může být užitečné vidět jeho obsah ještě než ho stáhnu celý. Tedy soubor se stahuje delší dobu, a může být užitečné vidět jeho obsah ještě než ho stáhnu celý.
Řádek 33: Řádek 33:
 Proto se tyto kompresní metody do prostředí Internetu nehodí. Proto se tyto kompresní metody do prostředí Internetu nehodí.
  
-===== Soubor ke stažení explicitně komprimovaný pomocí gzip, bzip2 nebo jiné neproudové metody =====+===== Soubor ke stažení explicitně komprimovaný pomocí gzip, bzip2 nebo jiné proudové metody =====
 Proudová (streamová) metoda komprese je taková, kde mohu obsah dekomprimovat tak, jak ho načítám, jak mi přichází ze sítě, a nemusím čekat až ho dostahuju celý. Proudová (streamová) metoda komprese je taková, kde mohu obsah dekomprimovat tak, jak ho načítám, jak mi přichází ze sítě, a nemusím čekat až ho dostahuju celý.
 Takový soubor je pak poskytnut ke stažení, a má pak typicky za jménem ještě další příponu ''.gz'' nebo ''.bz2'', například ''.xml.gz'', ''.csv.gz'', ''.nt.gz'' a podobně. Takový soubor je pak poskytnut ke stažení, a má pak typicky za jménem ještě další příponu ''.gz'' nebo ''.bz2'', například ''.xml.gz'', ''.csv.gz'', ''.nt.gz'' a podobně.
-Pokud je ale soubor vystaven takto, klient (člověk nebo aplikace) se z hlavičky ''Content-Type'' protokolu HTTP nebo v katalogu jako je NKOD dozví, že se jedná o data typu ''GNU zip''.+Pokud je ale soubor vystaven takto, klient (člověk nebo aplikace) se z hlavičky ''Content-Type'' protokolu HTTP dozví, že se jedná o data typu ''GNU zip''.
 V prostředí webu se pro tyto účely používá tzv. [[https://www.iana.org/assignments/media-types/media-types.xhtml|MIME typ]], v tomto případě tedy ''application/gzip''. V prostředí webu se pro tyto účely používá tzv. [[https://www.iana.org/assignments/media-types/media-types.xhtml|MIME typ]], v tomto případě tedy ''application/gzip''.
 Nedozví se tedy už, co za datový formát je uvnitř, a když soubor stáhne, musí ho před použitím nejprve dekomprimovat správnou metodou. Nedozví se tedy už, co za datový formát je uvnitř, a když soubor stáhne, musí ho před použitím nejprve dekomprimovat správnou metodou.
 Takový soubor tedy lze postupně rozbalovat, ale nelze ho přímo zpracovávat. Takový soubor tedy lze postupně rozbalovat, ale nelze ho přímo zpracovávat.
 Zejména nelze takto komprimovaný datový soubor validovat vůči jeho schématu, protože validátory obvykle nedetekují kompresi a neimplementují dekompresi. Zejména nelze takto komprimovaný datový soubor validovat vůči jeho schématu, protože validátory obvykle nedetekují kompresi a neimplementují dekompresi.
- 
 ===== Soubor ke stažení volitelně komprimovaný pomocí gzip ===== ===== Soubor ke stažení volitelně komprimovaný pomocí gzip =====
 Ideálním řešením v prostředí webu je využít možností, které už dlouho poskytuje protokol HTTP, a poskytovat soubor jak v komprimované, tak v nekomprimované podobě. Ideálním řešením v prostředí webu je využít možností, které už dlouho poskytuje protokol HTTP, a poskytovat soubor jak v komprimované, tak v nekomprimované podobě.
 HTTP hlavička ''Accept-Encoding: gzip'' umožňuje klientovi říct, že umí přijímat komprimovaná data. HTTP hlavička ''Accept-Encoding: gzip'' umožňuje klientovi říct, že umí přijímat komprimovaná data.
 Ta jsou pak klientovi poslána v komprimované podobě, a klient si je u sebe rovnou dekomprimuje. Ta jsou pak klientovi poslána v komprimované podobě, a klient si je u sebe rovnou dekomprimuje.
-Tentokrát je ale v odpovědi serveru jasně popsáno, kterou metodou komprimujeme ''Content-Encoding: gzip'', a co za data se přenáší, například ''Content-Type: text/csv''.+Tentokrát je ale v odpovědi serveru jasně popsáno, kterou metodou komprimujeme ''Content-Encoding: gzip'', a co za data se přenáší, například ''Content-Type: text/csv'', což pak skutečně odpovídá i záznamu v katalogu jako je NKOD.
 Tato metoda se běžně používá pro webové stránky v HTML, CSS styly a JavaScriptové soubory, a uplně stejně lze použít i pro otevřená data. Tato metoda se běžně používá pro webové stránky v HTML, CSS styly a JavaScriptové soubory, a uplně stejně lze použít i pro otevřená data.
 V této variantě jsou tedy data na serveru v nekomprimované podobě, a pokud klient požádá o komprimovaný přenost, server použije proudovou kompresi a klient proudovou dekompresi. V této variantě jsou tedy data na serveru v nekomprimované podobě, a pokud klient požádá o komprimovaný přenost, server použije proudovou kompresi a klient proudovou dekompresi.
  • špatná-praxe/komprese.txt
  • Poslední úprava: 2021/07/30 11:07
  • autor: Jakub Klímek