Fórum Root.cz

Hlavní témata => Vývoj => Téma založeno: ZAJDAN 25. 10. 2016, 12:21:44

Název: Komprese XML na straně klienta
Přispěvatel: ZAJDAN 25. 10. 2016, 12:21:44
Ahoj...
Scenář:
webový formulař obsahuje SVG(5-10MB), které se odesláním formuláře odešle jako XML string na server, tam se uloží zpět do SVG a vloží do generovaného PDF, které se pošle zpět do okna klientova prohlížeče.
Rychlost generování PDF je tedy synchroní s rychlostí upload linky na straně klienta.

Cíl:
urychlit proces generovaní PDF pomocí zmenšení odesílaných dat ze strany klienta na server
-------------------------------------------------------------------------------
nemáte tip jak před odesláním Ajaxem XML komprimovat?
Název: Re:komprese XML na straně klienta
Přispěvatel: j 25. 10. 2016, 12:50:48
Cece ja ti teda nevim, ale nekomprimuje ono http tak nejak od prirody? Teda pokud se srv i klient prihlasi k tomu, ze to umi. Jinak je to vseobecne protokol pro prenos vetsich objemu dat naprosto nevhodnej.

Jinak se da zcela jiste napsat klidne celej zip, jen bude vysledek presne nula.
Název: Re:komprese XML na straně klienta
Přispěvatel: ZAJDAN 25. 10. 2016, 13:01:55
Cece ja ti teda nevim, ale nekomprimuje ono http tak nejak od prirody? Teda pokud se srv i klient prihlasi k tomu, ze to umi. Jinak je to vseobecne protokol pro prenos vetsich objemu dat naprosto nevhodnej.

Jinak se da zcela jiste napsat klidne celej zip, jen bude vysledek presne nula.
Covece to nevim ani ja, pac na Apachi se pise:
'The mod_deflate module provides the DEFLATE output filter that allows output from your server to be compressed before being sent to the client over the network.'

Ale jak je to u apache s input, to by mne zajimalo. Mozna se na to cele spatne divam...
Název: Re:komprese XML na straně klienta
Přispěvatel: Ondrej Nemecek 25. 10. 2016, 13:03:07
Nevím o tom, že by existoval http standard pro kompresi dat odesílaných na server. Běžná http komprese funguje pro stažení dat ze serveru do browseru (a musí být na serveru povolena pro daný mime typ a browser ji musí podporovat).

Pro upload by ale mělo jít použít existující javascriptové knihovny pro kompresi a xml komprimovat před odesláním a na serveru zase dekomprimovat.
Název: Re:komprese XML na straně klienta
Přispěvatel: ZAJDAN 25. 10. 2016, 13:08:37
Pro upload by ale mělo jít použít existující javascriptové knihovny pro kompresi a xml komprimovat před odesláním a na serveru zase dekomprimovat.
mas nejaky ozkouseny tip? samotne jquery to neumi...aspon jsem nic nevylustil
Název: Re:komprese XML na straně klienta
Přispěvatel: Ondrej Nemecek 25. 10. 2016, 13:39:17
Citace
mas nejaky ozkouseny tip? samotne jquery to neumi...aspon jsem nic nevylustil

Ne, nic otestovaného nemám. Je potřeba pohledat a otestovat. Jsou toho tuny, stačí zadat do google "javascript compression library"...


Pokud to má být používané veřejně z internetu, bude hlavní kompatibilita a fallback chování.
Název: Re:komprese XML na straně klienta
Přispěvatel: Jan Forman 25. 10. 2016, 13:47:01
Komprese dat při http přenosech je standartní věc, obvykle umí snad každý prohlížeč a podpora na serveru musí být povolená. Používám to skoro všude a je to samozřejmě nejrychlejší varianta (obvykle v C).
Zkusil bych tedy jít tímto směrem, klient to umí téměř vždy, server je třeba postrčit.
Název: Re:komprese XML na straně klienta
Přispěvatel: Filip Jirsák 25. 10. 2016, 13:55:11
Komprese dat při http přenosech je standartní věc, obvykle umí snad každý prohlížeč a podpora na serveru musí být povolená. Používám to skoro všude a je to samozřejmě nejrychlejší varianta (obvykle v C).
Zkusil bych tedy jít tímto směrem, klient to umí téměř vždy, server je třeba postrčit.
Která přesně HTTP hlavička nese informaci o kompresi dat v požadavku (tj. při uploadu)? A jak se řeší to, zda danou kompresi podporuje server? U downloadu je to jasné, klient pošle požadavek se seznamem podporovaných metod, server z nich vybere nějakou, kterou podporuje, tu použije.
Název: Re:komprese XML na straně klienta
Přispěvatel: gamer 25. 10. 2016, 13:57:51
Která přesně HTTP hlavička nese informaci o kompresi dat v požadavku (tj. při uploadu)? A jak se řeší to, zda danou kompresi podporuje server? U downloadu je to jasné, klient pošle požadavek se seznamem podporovaných metod, server z nich vybere nějakou, kterou podporuje, tu použije.

http://serverfault.com/questions/56700/is-it-possible-to-enable-http-compression-for-requests
Název: Re:komprese XML na straně klienta
Přispěvatel: Filip Jirsák 25. 10. 2016, 14:31:52
http://serverfault.com/questions/56700/is-it-possible-to-enable-http-compression-for-requests
To odpovídá jen na tu první část. Jaký je obvyklý/doporučený postup pro detekci, zda a jaké kódování tělo požadavku server podporuje?
Název: Re:komprese XML na straně klienta
Přispěvatel: ZAJDAN 25. 10. 2016, 14:35:39
no ted mi docvakla jeste jedna vec...ze ja to Ajaxem posilam na PHP a pokud to zkomprimuju nejakou JS knihovnou tak tomu PHP nebude rozumet a bude potreba dalsi čáry máry :(
Název: Re:komprese XML na straně klienta
Přispěvatel: Kit 25. 10. 2016, 14:43:41
no ted mi docvakla jeste jedna vec...ze ja to Ajaxem posilam na PHP a pokud to zkomprimuju nejakou JS knihovnou tak tomu PHP nebude rozumet a bude potreba dalsi čáry máry :(

Stačí v PHP zavolat inverzní funkci k té javascriptové.
Název: Re:komprese XML na straně klienta
Přispěvatel: gamer 25. 10. 2016, 15:32:13
To odpovídá jen na tu první část. Jaký je obvyklý/doporučený postup pro detekci, zda a jaké kódování tělo požadavku server podporuje?
Asi žádný, buď to server umí a vrátí 200, nebo to server neumí a vrátí 500. To už si musí rozhodnout Zajdan, jak to chce provozovat a jestli umí zařídit, aby server kompresi requestu podporoval.
Název: Re:komprese XML na straně klienta
Přispěvatel: ZAJDAN 25. 10. 2016, 15:45:08
To odpovídá jen na tu první část. Jaký je obvyklý/doporučený postup pro detekci, zda a jaké kódování tělo požadavku server podporuje?
Asi žádný, buď to server umí a vrátí 200, nebo to server neumí a vrátí 500. To už si musí rozhodnout Zajdan, jak to chce provozovat a jestli umí zařídit, aby server kompresi requestu podporoval.
server mam pod kontrolou, je to Apache...snazil jsem se pochopit dokumentaci a chapu to dobre?,  ze do virtualhostu pro dany web pridam:
SetInputFilter DEFLATE
Název: Re:komprese XML na straně klienta
Přispěvatel: ZAJDAN 25. 10. 2016, 15:47:20
Stačí v PHP zavolat inverzní funkci k té javascriptové.
díky za info