PHP CSS bei bedarf laden!

Belee

Lt. Commander
Registriert
Dez. 2006
Beiträge
1.518
Hi

Wie könnte man realisieren das für Seiten die nicht so oft genutzt werden,
das CSS was ich dann aus der Haupt-CSS auslagern würde, man nur lädt wenn
die Seite halt geöffent wird?

Da meine Seite alle in die index.php includiert werden kann ich das mit @import vergessen also muss ich das irgendwie mit PHP machen nur fällt mir nichts vernünftiges ein.

Gedacht habe ich an folgendes...

Ich setzte im HEAD der index.php ein PHP Script ein, wo ich mit GET anbrage welche
Seite geladen wurde um dann mit echo die passenden css auszugeben, nur wie wäre es am besten, am saubersten?

Gruß
Belee
 
hi Belee,

arbeitest du mit einem CMS-System? Wenn ja welches?

liebe Grüße
studibraut
Ergänzung ()

ach ja ein bisschen mehr Informationen wären auch nicht schlecht... Aufbau der Webseite. Wie ist es im Moment gelöst? usw.
 
Kein CMS,

gelösst ist es zurzeit garnicht, ich lade nur eine CSS wo alles drin steht ganz normal mit <link rel="stylesheet".
Darum wollte ich jetzt Teile aus der Haupt-CSS auslagern, also zB. für Impressum/Formular eine CSS
about.css machen und diese dann halt nur dann laden wenn diese Seite auch benutzt wird.
 
Die Methode mit der Get Abfrage ist doch super, kannst halt wenn du weißt welche Seiten es schon gibt auch mit nem Switch Case arbeiten, aber es sollte auch mit nem If Klappen ;)
 
Mein Vorschlag wäre eine zentrale CSS-Datei einbinden und in dieser mehre CSS-Dateien nach ihren Themenbereiche einzubinden z.B. standard.css, formular.css, ... usw.

Der Browser lädt ja beim ersten Besuch deiner Webseite, dann alle CSS-Dateien in seinen Zwischenspeicher, anschließend muss er Sie nicht erneut anfordern. Dies ist ja der Sinn, warum man Stylesheets als externe Dateien einbindet.
 
PHP:
<?php
switch ($_GET['parameter'])
{
case "Seite1": print  '<link rel="stylesheet" type="text/css" href="css/seite1.css" />'; break;
case "Seite2": print  '<link rel="stylesheet" type="text/css" href="css/seite2.css" />'; break;
.
.
.
default:
  print  '<link rel="stylesheet" type="text/css" href="css/default.css" />'; 
}
 
Belee schrieb:
nur wie wäre es am besten, am saubersten?

Am saubersten wäre es mit Templates :) Je mehr PHP-Code sich in den HTML-Text hineinschleicht, desto weniger sauber wird es.
 
dafür ist es jetzt zu spät, da müsste ich komplett neu anfangen und da habe ich erlichgesagt keine böcke mehr drauf. das html/php mixe nicht so der bringer sind weiß ich, die sind aber praktisch - meistens. das nächste projekt wird besser durchdacht das habe ich jetzt gelernt.

@fussel
so habe ich mir das auch gedacht, werde ich wohl so machen...

@studi...
das ist mir schon klar, nur warum soll der browser css parts laden die höchstwahrscheinlich nur 1 mal im monat abgerufen werden? wobei ich eh schon genug habe was ersteinmal geladen werden muss. das problem bei mir ist das grafikdesign, da ich da aber nichts mehr machen kann "sprites nutze ich schon" muss ich zusehen das der rest so dünn wie nur möglich wird.
 
Alle Empfehlungen hier solltest du nicht befolgen, im Hinblick auf Performance – darum geht es letztlich – gilt es folgendes zu machen:
  • 1. CSS-Datei mit allen Anweisungen
  • Den Inhalt der CSS-Datei minimieren
  • Die Datei komprimiert ausliefern
  • Keine @import-Anweisungen im CSS verwenden

Verschiedene CSS-Dateien sind nur interessant zur Entwicklung, bei der Auslieferung sollte immer nur eine einzige Datei zum Einsatz kommen. Systeme wie Drupal aggregieren die verstreuten CSS-Dateien zu einer um die Performance zu erhöhen.

Vielleicht solltest du dir besser ein System überlegen wie du deine CSS-Dateien sammelst, minimierst und dann gepackt als einzelne Datei auslieferst. ;)
 
Du kannst mit <link rel="stylesheet"> auch auf eine PHP-Datei verlinken (z.B. css.php). In dieser lädst du standardmäßig das "globale" Stylesheet in eine Variable und fragst danach ab, ob die von dir genannte Seite, die so selten besucht wird, geladen wird. Falls dies zutrifft, ergänzt du die Variable um den Inhalt des zusätzlichen Stylesheets.

Zum Schluss sendest du einen PHP-Header mit content-type: text/css und gibst den ganzen Krempel aus. :)
 
Fleshgrinder schrieb:
Alle Empfehlungen hier solltest du nicht befolgen, im Hinblick auf Performance – darum geht es letztlich – gilt es folgendes zu machen:
  • 1. CSS-Datei mit allen Anweisungen
  • Den Inhalt der CSS-Datei minimieren
  • Die Datei komprimiert ausliefern
  • Keine @import-Anweisungen im CSS verwenden
...

Ich kann das nur wiederholen und nochmals vorkauen.

Siehe http://developer.yahoo.com/performance/rules.html
sowie YSlow (basierend auf ersten Link): http://developer.yahoo.com/yslow/
 
Zurück
Oben