Komprese XML na straně klienta

ZAJDAN

  • *****
  • 2 092
    • Zobrazit profil
    • E-mail
Komprese XML na straně klienta
« kdy: 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?
« Poslední změna: 25. 10. 2016, 20:44:09 od Petr Krčmář »
Vesele, vesele do továrny dělník běží...vesele, vesele do továrny jde. Vesele se usmívá když mu soustruh zazpívá...vesele, vesele do továrny jde. Vesele si poskočí když se soustruh roztočí ...vesele, vesele do továrny jde.


j

Re:komprese XML na straně klienta
« Odpověď #1 kdy: 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.

ZAJDAN

  • *****
  • 2 092
    • Zobrazit profil
    • E-mail
Re:komprese XML na straně klienta
« Odpověď #2 kdy: 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...
Vesele, vesele do továrny dělník běží...vesele, vesele do továrny jde. Vesele se usmívá když mu soustruh zazpívá...vesele, vesele do továrny jde. Vesele si poskočí když se soustruh roztočí ...vesele, vesele do továrny jde.

Re:komprese XML na straně klienta
« Odpověď #3 kdy: 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.

ZAJDAN

  • *****
  • 2 092
    • Zobrazit profil
    • E-mail
Re:komprese XML na straně klienta
« Odpověď #4 kdy: 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
Vesele, vesele do továrny dělník běží...vesele, vesele do továrny jde. Vesele se usmívá když mu soustruh zazpívá...vesele, vesele do továrny jde. Vesele si poskočí když se soustruh roztočí ...vesele, vesele do továrny jde.


Re:komprese XML na straně klienta
« Odpověď #5 kdy: 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í.

Re:komprese XML na straně klienta
« Odpověď #6 kdy: 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.
„Řemeslo se naučí každý. Umění nikdo.“
„Jednoduchost je nejvyšší úroveň sofistikovanosti.“
- Leonardo Da Vinci

Re:komprese XML na straně klienta
« Odpověď #7 kdy: 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.

gamer

Re:komprese XML na straně klienta
« Odpověď #8 kdy: 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

Re:komprese XML na straně klienta
« Odpověď #9 kdy: 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?

ZAJDAN

  • *****
  • 2 092
    • Zobrazit profil
    • E-mail
Re:komprese XML na straně klienta
« Odpověď #10 kdy: 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 :(
Vesele, vesele do továrny dělník běží...vesele, vesele do továrny jde. Vesele se usmívá když mu soustruh zazpívá...vesele, vesele do továrny jde. Vesele si poskočí když se soustruh roztočí ...vesele, vesele do továrny jde.

Kit

Re:komprese XML na straně klienta
« Odpověď #11 kdy: 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é.

gamer

Re:komprese XML na straně klienta
« Odpověď #12 kdy: 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.

ZAJDAN

  • *****
  • 2 092
    • Zobrazit profil
    • E-mail
Re:komprese XML na straně klienta
« Odpověď #13 kdy: 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
Vesele, vesele do továrny dělník běží...vesele, vesele do továrny jde. Vesele se usmívá když mu soustruh zazpívá...vesele, vesele do továrny jde. Vesele si poskočí když se soustruh roztočí ...vesele, vesele do továrny jde.

ZAJDAN

  • *****
  • 2 092
    • Zobrazit profil
    • E-mail
Re:komprese XML na straně klienta
« Odpověď #14 kdy: 25. 10. 2016, 15:47:20 »
Stačí v PHP zavolat inverzní funkci k té javascriptové.
díky za info
Vesele, vesele do továrny dělník běží...vesele, vesele do továrny jde. Vesele se usmívá když mu soustruh zazpívá...vesele, vesele do továrny jde. Vesele si poskočí když se soustruh roztočí ...vesele, vesele do továrny jde.