Ik wil mijn site wat bandbreedte laten besparen door gzip te gebruiken. Nu heeft mijn hosting provider dit niet in apache aangezet, en moet ik dus wat met php gaan klooien. Nu laat ik dus een php script een bestand uitlezen en de gzipped versie terug sturen. Echter wil ik ook het juiste mimetype, en daar zit het probleem: Enigste functies die ik gevonden heb zijn mime_content_type en finfo. Nu worden deze beide niet ondersteund door mijn provider en kan ik niet de correcte mimetype ophalen. O ja, ook get_headers kan een mime type ophalen, maar dan zit ik weer met een HTTP request en is mijn tijdswinst weg.
. Iemand nog een idee hoe ik het juiste mimetype ophaal met een functie die wel werkt?
Ik weet dat je host het uit heeft gezet, maar ik zou toch maar eens gaan zeuren dat ze het wel aan zetten. Gzip compressie lijkt me toch wel handig om aan te hebben staan...
Qua functies in PHP moet je eens kijken naar fileinfo (zoals PHP.net zelf aangeeft, is deze beter dan mime_content_type (deze laatste is ook deprecated)).
Qua functies in PHP moet je eens kijken naar fileinfo (zoals PHP.net zelf aangeeft, is deze beter dan mime_content_type (deze laatste is ook deprecated)).
Tja, als je hoster geen mime_content_type of finfo ondersteunt (wat vreemd overigens, welke PHP versie?) wordt het lastig. Waar gaat het om? Een eigen set bestanden (CSS etc) die je onder controle hebt? Dan zou je kunnen kiezen om de minder nette en veilige manier te gebruiken: kijken naar de extensie van het bestand.
Anyone who gets in between me and my morning coffee should be insecure.
ik draai PHP versie 5.2.12 . Heb contact opgenomen met de support en ze zeggen dat ze het misschien in de toekomst zullen toepassen. En de enigste mogelijkheid is dus inderdaad de bestandsextensie uitlezen en het gepaste mimetype versturen.
Mag ik vragen waarom je per se de mime type terug wil sturen? Dat ziet de browser toch automatisch al als ie het unzipt zegmaar.
En anders kun je dacht ik gewoon een header meegeven.
Verder is het slechts een kwestie van ob_start("ob_gzhandler"); bovenaan en ob_end_flush(); onderaan.
correct me if i'm wrong
En anders kun je dacht ik gewoon een header meegeven.
Verder is het slechts een kwestie van ob_start("ob_gzhandler"); bovenaan en ob_end_flush(); onderaan.
correct me if i'm wrong
mimetype wordt niet meegestuurd als ik iets via php genereer , ik krijg steeds text/html als ik het niet expliciet opgeef.
Het resultaat is cachebaar.ook get_headers kan een mime type ophalen, maar dan zit ik weer met een HTTP request en is mijn tijdswinst weg
Je kunt ook kijken of je wat kunt met shell-commands; zie man file bijvoorbeeld.
Nu weet ik niet wat de toepassing van dit alles is, maar je zou kunnen overwegen om de gebruiker het bestand (geforceerd) te laten downloaden. In dit geval zou je niet de mime van het bestand te weten hoeven komen. Wanneer de gebruiker vervolgens het bestand probeerd te openen, dan zal er simpelweg een downloadvenster te voorschijn komen. Eenmaal het bestand op de computer van de client staat, dan kan het OS zelf het mime uitlezen.
PHP:
1
2
| header('Content-Type: application/force-download'); // En vervolgens raw data, eventueel in combinatie met andere headers |
Het nut lijkt me trouwens vrij beperkt; plaatjes zijn niet comprimeerbaar, en voor je php-scripts kun je al de output buffer gebruiken. Alleen voor JavaScript kun je nog wel winst boeken.
Pagina: 1