Delphi-PRAXiS
Seite 3 von 5     123 45      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Cross-Platform-Entwicklung (https://www.delphipraxis.net/91-cross-platform-entwicklung/)
-   -   PHP gzcompress(); Delphi ZDecompressStr ( ) Data error (https://www.delphipraxis.net/189302-php-gzcompress-%3B-delphi-zdecompressstr-data-error.html)

Valle 28. Mai 2016 23:02

AW: PHP gzcompress(); Delphi ZDecompressStr ( ) Data error
 
Zitat:

Zitat von luisk (Beitrag 1339106)
Das hab ich probiert - Funktioniert aber nicht !

Wenn du das machst musst du das zippen auf der Serverseite weglassen. Gzip funktioniert dann völlig transparent. Um das zu überprüfen kannst du beispielsweise Wireshark benutzen und dir den Traffic anschauen. Dieser sollte dann Gzip sein.

Zitat:

Zitat von luisk (Beitrag 1339105)
das mit dem Zippen funktioniert doch auf der Serverseite
Das Problem liegt doch bei IdHTTP1: TIdHTTP; in meiner Delphi-FMX-Anwendung

Deswegen ja mein Vorschlag. Wenn das nicht funktioniert, bau die encode-Zeile aus dem Server aus und die decode Zeile aus dem Client. Sag deinem Webserver er soll Gzip machen (wahrscheinlich tut er das schon) und gib deinem HTTP-Client wie mjustin beschrieben hat die Decompressor Property.

Anschließend ist die Kompression völlig transparent und ohne eine einzige Zeile Code. Klingt das nicht erstrebenswert?

Und um das zu überprüfen (weils ja transparent ist) kann man sich noch Wireshark oder ähnliche Tools zu Hilfe nehmen.

luisk 28. Mai 2016 23:23

AW: PHP gzcompress(); Delphi ZDecompressStr ( ) Data error
 
https://varvy.com/pagespeed/enable-compression.html
The code below should be added to your .htaccess file...
<ifModule mod_gzip.c>
mod_gzip_on Yes
mod_gzip_dechunk Yes
mod_gzip_item_include file .(html?|txt|css|js|php|pl)$
mod_gzip_item_include handler ^cgi-script$
mod_gzip_item_include mime ^text/.*
mod_gzip_item_include mime ^application/x-javascript.*
mod_gzip_item_exclude mime ^image/.*
mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.*
</ifModule>
Das hab ich jetzt mal ausgeführt. Mal sehen, was passiert.

luisk 29. Mai 2016 10:54

AW: PHP gzcompress(); Delphi ZDecompressStr ( ) Data error
 
@Valle
Danke erstmal für die Tips.
Ich teste mit einem xampp Apache server Version 2.4.10
Ich habe jetzt mal eine .htaccess Datei mit obigem im htdocs-Verzeichnis angelegt.
Wireshark scheint Probleme mit meiner Firwall zu haben.

Daher habe ich jetzt mal folgenden Test über curl.exe gemacht:

C:\Programme\curl>curl -I -H 'Accept-Encoding: gzip,deflate' http ://localhost
curl: (6) Could not resolve host: gzip,deflate'
HTTP/1.1 302 Found
Date: Sun, 29 May 2016 08:39:20 GMT
Server: Apache/2.4.10 (Win32) OpenSSL/1.0.1i PHP/5.6.3
X-Powered-By: PHP/5.6.3
Location: http://localhost/xampp/
Content-Type: text/html; charset=UTF-8

'Could not resolve host: gzip,deflate' bedeutet ja, dass die Komprimierung nicht aktiv ist.
Was muss ich noch berücksichtigen ?

Luckie 29. Mai 2016 10:57

AW: PHP gzcompress(); Delphi ZDecompressStr ( ) Data error
 
Ich würde eher sagen, dass er den Host nicht gefunden hat, bzw. dessen IP Adresse nicht auflösen konnte.

luisk 29. Mai 2016 11:02

AW: PHP gzcompress(); Delphi ZDecompressStr ( ) Data error
 
Zitat:

Zitat von Luckie (Beitrag 1339112)
Ich würde eher sagen, dass er den Host nicht gefunden hat, bzw. dessen IP Adresse nicht auflösen konnte.

Den Webserver hat curl doch gefunden
HTTP/1.1 302 Found
Date: Sun, 29 May 2016 08:39:20 GMT
Server: Apache/2.4.10 (Win32) OpenSSL/1.0.1i PHP/5.6.3
X-Powered-By: PHP/5.6.3
Location: http://localhost/xampp/
Content-Type: text/html; charset=UTF-8

nur nicht die Dekomprimierung
Die Frage ist, ob es reicht, wenn ich diese .htaccess-Datei in /htdocs speichere.

luisk 29. Mai 2016 11:25

AW: PHP gzcompress(); Delphi ZDecompressStr ( ) Data error
 
weiterer Test: auch noch kein Erfolg
https://gtmetrix.com/enable-gzip-compression.html
.htaccess:
<IfModule mod_deflate.c>
# Compress HTML, CSS, JavaScript, Text, XML and fonts
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/vnd.ms-fontobject
AddOutputFilterByType DEFLATE application/x-font
AddOutputFilterByType DEFLATE application/x-font-opentype
AddOutputFilterByType DEFLATE application/x-font-otf
AddOutputFilterByType DEFLATE application/x-font-truetype
AddOutputFilterByType DEFLATE application/x-font-ttf
AddOutputFilterByType DEFLATE application/x-javascript
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE font/opentype
AddOutputFilterByType DEFLATE font/otf
AddOutputFilterByType DEFLATE font/ttf
AddOutputFilterByType DEFLATE image/svg+xml
AddOutputFilterByType DEFLATE image/x-icon
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/javascript
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/xml

# Remove browser bugs (only needed for really old browsers)
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
Header append Vary User-Agent
</IfModule>

Valle 29. Mai 2016 11:34

AW: PHP gzcompress(); Delphi ZDecompressStr ( ) Data error
 
Ich bin mir ziemlich sicher dass Xampp bereits Gzip aktiviert hat. Wenn am Ende alles funktioniert, dann entferne deine .htaccess nochmal und schau ob es immer noch geht, damit du nicht unnötiges Zeug mit dir rumträgst.

Was deine "Could not resolve host" Fehlermeldung angeht: Hinter der Fehlermeldung steht dein Header, er hat also versucht den HTTP Header als Host aufzulösen, was natürlich nicht funktioniert. Das beudetet, dass du ein Syntax Problem in deinem Befehl hast. Ich sehe da auch ein Leerzeichen wo keins hingehört, also schau nochmal genau hin.

Wenn du CURL erfolgreich ausgeführt hast, dann muss in der Ausgabe auch der Header "Content-Encoding: gzip" aufauchen.

Wichtig ist außerdem, dass du den richtigen Pfad aufrufst. Du hast jetzt nur auf "/" zugegriffen, was unter Xampp zu einer Weiterleitung führt. Gib doch bitte die richtige URL ein, damit auch der richtige Content geladen wird. Eine Weiterleitung hat oft keinen Content und wird daher auch nicht komprimiert.

Ansonsten kann ich dir nochmals empfehlen Wireshark oder ein ähnliches Programm dafür zu verwenden. Denn hier testest du zwar deinen Webserver, was schonmal gut ist, aber du testest nicht, ob es auch mit deinem Client funktioniert. Schalte die Firewall dafür eben ab (über die Notwendigkeit einer Personal Firewall kann man sowieso streiten...).

Falls Wireshark zu kompliziert ist, habe ich glaub ich mal was von einem HTTP Analyzer in diesem Forum gehört. Lässt sich leicht über Google finden. Ich bin mir aber nicht sicher ob es wirklich der war, daher keine Garantie auf Vertrauenswürdigkeit!

Update: So funktioniert das bei mir, unter Linux:

Code:
valentin@t460s ~ $ curl -I -H "Accept-Encoding: gzip,deflate" http://www.heise.de/
HTTP/1.1 200 OK
Server: nginx
Content-Type: text/html; charset=utf-8
Content-Encoding: gzip
X-Cobbler: octo01.heise.de
X-Clacks-Overhead: GNU Terry Pratchett
Last-Modified: Sun, 29 May 2016 09:35:17 GMT
Expires: Sun, 29 May 2016 09:35:49 GMT
Cache-Control: public, max-age=32
Content-Length: 47452
Accept-Ranges: bytes
Date: Sun, 29 May 2016 09:35:37 GMT
Age: 20
Connection: keep-alive
Vary: User-Agent,Accept-Encoding,X-Forwarded-Proto,X-Export-Format,X-Export-Agent

luisk 29. Mai 2016 11:42

AW: PHP gzcompress(); Delphi ZDecompressStr ( ) Data error
 
Hi,
hab jetzt das Leerzeichen nach dem : entfernt. Jetzt sieht es so aus: Die Meldung 'could not resolve Host' weg

C:\Programme\curl>curl -I -H 'Accept-Encoding:gzip,deflate' http://localhost
HTTP/1.1 302 Found
Date: Sun, 29 May 2016 09:40:54 GMT
Server: Apache/2.4.10 (Win32) OpenSSL/1.0.1i PHP/5.6.3
X-Powered-By: PHP/5.6.3
Location: http://localhost/xampp/
Content-Type: text/html; charset=UTF-8

Valle 29. Mai 2016 11:46

AW: PHP gzcompress(); Delphi ZDecompressStr ( ) Data error
 
Genau. Und jetzt lies noch den Rest meines Posts.

Du musst den richtigen Pfad aufrufen. Dort wo du Curl jetzt hinschickst, ist nix, was komprimiert werden könnte.

Update:
Code:
curl -X PUT -I -H "Accept-Encoding: gzip,deflate" "http://127.0.0.1/.....php?bef=SELECT..."

luisk 29. Mai 2016 11:57

AW: PHP gzcompress(); Delphi ZDecompressStr ( ) Data error
 
wo sollte Deiner Meinung nach ein Blank zu viel sein ?
hier ist ein ähnliches Bsp:
http://www.cyberciti.biz/faq/linux-u...pression-test/


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:39 Uhr.
Seite 3 von 5     123 45      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz