Veel CSS, wat is handig

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: « vorige 1 2

Ozzie PHP

Ozzie PHP

01/08/2011 11:50:59
Quote Anchor link
Thanks voor de link en de info!

Maar als je een css bestand zo inlaadt:

<link rel="stylesheet" type="text/css" href="/css/css.php?file=main-form" />

Wordt het door de browser dan wel gecachet? Ziet de browser dit wel als een css bestand? Met andere woorden, als diezelfde link op pagina 2 wordt aangeroepen, haalt de browser 'm dan uit z'n eigen cache?

* Begrijp ik goed dat die .htaccess manier niet altijd gaat werken? Die mod-headers module is namelijk een extension, waarover ik hetvolgende terugvind: A module with "Extension" status is not normally compiled and loaded into the server. To enable the module and its functionality, you may need to change the server build configuration files and re-compile Apache.

Met andere woorden, dit zal dus niet altijd gaan werken. Dan zou je dus zeggen dat manier 2 (aanroepen van css / javascript) via een php bestand beter is, is dat een juiste conclusie? Maar dan vraag ik me dus nog steeds af of de browser dit goed cachet.
 
PHP hulp

PHP hulp

27/11/2024 06:02:42
 
The Force

The Force

01/08/2011 12:12:58
Quote Anchor link
Ozzie PHP op 01/08/2011 11:50:59:
Thanks voor de link en de info!

Maar als je een css bestand zo inlaadt:

<link rel="stylesheet" type="text/css" href="/css/css.php?file=main-form" />

Wordt het door de browser dan wel gecachet? Ziet de browser dit wel als een css bestand? Met andere woorden, als diezelfde link op pagina 2 wordt aangeroepen, haalt de browser 'm dan uit z'n eigen cache?


Ja, want het PHP bestand geeft aan dat het danwel CSS danwel javascript is:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
// Send Content-Type
header ("Content-Type: text/" . $type);
?>


Geen probleem dus.

Ozzie PHP op 01/08/2011 11:50:59:
* Begrijp ik goed dat die .htaccess manier niet altijd gaat werken? Die mod-headers module is namelijk een extension, waarover ik hetvolgende terugvind: A module with "Extension" status is not normally compiled and loaded into the server. To enable the module and its functionality, you may need to change the server build configuration files and re-compile Apache.

Met andere woorden, dit zal dus niet altijd gaan werken. Dan zou je dus zeggen dat manier 2 (aanroepen van css / javascript) via een php bestand beter is, is dat een juiste conclusie? Maar dan vraag ik me dus nog steeds af of de browser dit goed cachet.

Als bij de server bijvoorbeeld gzip uitstaat dan werkt het uberhaupt niet, welke manier je ook gebruikt. Je geeft namelijk enkel aan in de header (via htaccess of PHP met header()) dat je gzip wilt toepassen. Het is de server die het uiteindelijk voor zijn rekening neemt.

Het voordeel van het combine script is dat hij rekening houdt of een bepaalde browser bepaalde features ondersteund. Hij kijkt ook welke vormen van encoding ondersteund worden door de server. Wordt gzip ondersteund dan is het gzip, zoniet dan wordt gekeken of 'deflate' encoding ondersteund wordt:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php
// Determine supported compression method
$gzip = strstr($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip');
$deflate = strstr($_SERVER['HTTP_ACCEPT_ENCODING'], 'deflate');

// Determine used compression method
$encoding = $gzip ? 'gzip' : ($deflate ? 'deflate' : 'none');
?>


Het script ondersteund ook caching (op de server) voor een verdere optimalisering van de uitvoersnelheid. Het stuurt indien nodig daarnaast de 304 header om bij de browser aan te geven dat het zijn lokale cache kan gebruiken. Het kijkt vantevoren daarvoor of het bestand is aangepast zodat je niet met versienummers hoeft te werken om wijzigingen effectief te maken (zelfs als het een future expiry date heeft).

Kortom: ideaal dus.
 
Ozzie PHP

Ozzie PHP

01/08/2011 12:20:51
Quote Anchor link
Oké, klinkt goed allemaal!

Maar deze manier (met het script) is volgens mij sowieso wel beter, omdat die apache module standaard niet aanwezig is. En met dit script heb je daar geen last van... nice :-)

Toevoeging op 01/08/2011 12:21:56:

Wat gebeurt er trouwens als een bepaalde browser de encoding feautures niet ondersteunt? Gaat het dan mis?
 
The Force

The Force

01/08/2011 14:52:43
Quote Anchor link
Volgens mij kan het 'fout' gaan bij IE6 voor SP2 (tenminste dat gaf iemand aan op een forum). Ik heb me er verder niet in verdiept. Het script weert IE van gzipping/deflating. Volgens http://www.subbu.org/blog/2008/03/ie7-deflate-or-not werkt gzip in IE7 wel, deflate niet. Je kan er ook zien wat het resultaat is als het fout gaat. De reden voor het compleet weren is waarschijnlijk dat het soms een beetje buggy is in IE, zie http://schroepl.net/projekte/mod_gzip/browser.htm

Volgens mij is het redelijk veilig om vanaf IE7 te gzippen.
 
Ozzie PHP

Ozzie PHP

01/08/2011 15:08:29
Quote Anchor link
Begrijp ik goed dat dat script dan nooit iets zipt voor IE? Of gaat het alleen om versies < IE7?

Kunnen alle moderne browsers overigens wel gecomprimeerde data ontvangen?

Is het trouwens geen beter idee om in plaats van welke browser wel mag en welke niet (zoals ze dat in het script doen) gebruik te maken van deze functie:

http://php.net/manual/en/function.ob-gzhandler.php

Of gaat dat niet werken?
 
The Force

The Force

01/08/2011 15:44:35
Quote Anchor link
Ozzie PHP op 01/08/2011 15:08:29:
Begrijp ik goed dat dat script dan nooit iets zipt voor IE? Of gaat het alleen om versies < IE7?


O dat dacht ik eerst maar nu zie ik dat hij nog specifiek de versie controleert. Dus het gaat alleen om versies < IE7. Download anders het bestand even, het zit heel eenvoudig in elkaar.

Ozzie PHP op 01/08/2011 15:08:29:
Kunnen alle moderne browsers overigens wel gecomprimeerde data ontvangen?

In principe wel, maar het is altijd goed om te controleren of het ondersteund wordt.

Ozzie PHP op 01/08/2011 15:08:29:
Is het trouwens geen beter idee om in plaats van welke browser wel mag en welke niet (zoals ze dat in het script doen) gebruik te maken van deze functie:

http://php.net/manual/en/function.ob-gzhandler.php

Of gaat dat niet werken?


Dat doen ze in het script dus niet (download het maar eens). De situatie is vrij ideaal: browsers geven aan welke vormen van encoding ze ondersteunen. Het script kijkt gewoon wat de browser zegt te ondersteunen en geeft indien nodig de voorkeur aan gzip. Alleen geven een aantal versies van IE aan dat ze gzip/deflate ondersteunen, terwijl daar bugs kunnen optreden. Dus dit script filtert deze eruit. Ideaal dus. Elke browser krijgt het optimale bestand aangeboden, of je er nu met Chrome, IE6, IE7, Firefox of zelfs Netscape 3.0 heen gaat.
Gewijzigd op 01/08/2011 15:46:05 door The Force
 
Ozzie PHP

Ozzie PHP

01/08/2011 16:19:39
Quote Anchor link
Dankjewel voor de uitleg. Ik had het bestand al gedownload en bekeken, maar ik bedoelde dus... kun je in plaats van de manier waarop ze het in dit script doen, niet beter een standaard PHP functie gebruiken die daar voor gemaakt is.

Als ik de omschrijving lees van ob-gzhandler dan staat er dit:

Before ob_gzhandler() actually sends compressed data, it determines what type of content encoding the browser will accept ("gzip", "deflate" or none at all) and will return its output accordingly. All browsers are supported since it's up to the browser to send the correct header saying that it accepts compressed web pages

Met andere woorden deze functie lijkt dit allemaal al te regelen, dus vraag ik me af of het dan niet beter is om deze functie te gebruiken. Of zie ik het verkeerd nu?
 
The Force

The Force

01/08/2011 16:41:59
Quote Anchor link
Ozzie PHP op 01/08/2011 16:19:39:
Dankjewel voor de uitleg. Ik had het bestand al gedownload en bekeken, maar ik bedoelde dus... kun je in plaats van de manier waarop ze het in dit script doen, niet beter een standaard PHP functie gebruiken die daar voor gemaakt is.

Als ik de omschrijving lees van ob-gzhandler dan staat er dit:

Before ob_gzhandler() actually sends compressed data, it determines what type of content encoding the browser will accept ("gzip", "deflate" or none at all) and will return its output accordingly. All browsers are supported since it's up to the browser to send the correct header saying that it accepts compressed web pages

Met andere woorden deze functie lijkt dit allemaal al te regelen, dus vraag ik me af of het dan niet beter is om deze functie te gebruiken. Of zie ik het verkeerd nu?

Ja dat zie je verkeerd ;). Deze functie kijkt enkel naar wat de browser aangeeft te kunnen. Het filtert dus niet de versies van IE eruit die buggy zijn. Daarnaast moet je dan output buffering gebruiken.
 
Ozzie PHP

Ozzie PHP

01/08/2011 16:46:04
Quote Anchor link
Oké... en als je nou voor lief neemt dat het bij die paar buggy browsers mis gaat, is het dan wel een goede optie? Is het erg dat je output buffering moet toepassen?
 
The Force

The Force

01/08/2011 17:14:38
Quote Anchor link
Jij bent ook goed in doorvragen ;). Maar waarom zou je het willen? Kies voor output buffering als je het nodig hebt (bijvoorbeeld om header() te gebruiken terwijl je script al het een en ander geëchood heeft). Ga het niet toepassen omdat er een functie in zit die niet eens zo volledig is. Onder water gebruikt die ob functie ook gewoon de $_SERVER['ACCEPT_ENCODING'] variabele.

De man die dit script gemaakt heeft heeft zich grondig verdiept in het hele gebeuren met cache (server en browser), encoding, eventuele problemen die browsers daar mee hebben en dergelijke onderwerpen. Jij kan zijn expertise gebruiken om betere websites te bouwen. Dat is het mooie met dergelijke opensource projecten. Als je alles zelf wilt doen of wil verbeteren dan ben je enkel bezig het jezelf lastig te maken. Hetzelfde geld met bijvoorbeeld frameworks. Die zijn ontwikkeld door een team van mensen die enkel als doel hebben een framework te maken die zo goed mogelijk werkt. Die kan je vervolgens geheel gratis gebruiken. Dus als tip voor de ontwikkeling van je CMS: omarm het opensource gebeuren. Een goede programmeur combineert de juiste dingen met elkaar zodat hij tijd heeft om innovatief te zijn.

Oké dat was een beetje offtopic.
 
Ozzie PHP

Ozzie PHP

01/08/2011 17:28:37
Quote Anchor link
Hehe... thanks. Ik wil wel altijd alles zo goed mogelijk... en vooral zo universeel mogelijk doen. Ik hou er niet van om voor specifieke browsers speciale trucs te moeten uithalen. Dan heb ik daar liever een andere oplossing voor die universeel is, dus vandaar mijn vraag of het ook anders kan. Maar goed, ik ben in ieder geval weer een stukje wijzer ;-)
Gewijzigd op 01/08/2011 17:38:32 door Ozzie PHP
 

Pagina: « vorige 1 2



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.