WinFuture-Forum.de: Css Optimierer (csstidy) - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
  • 3 Seiten +
  • 1
  • 2
  • 3

Css Optimierer (csstidy)


#1 Mitglied ist offline   Floele 

  • Gruppe: aktive Mitglieder
  • Beiträge: 919
  • Beigetreten: 22. Juni 04
  • Reputation: 0

geschrieben 17. Mai 2005 - 15:53

Vor einiger Zeit hab ich mich mal an die Arbeit gemacht, einen CSS Optimierer und Formatierer zu entwickeln, und zwar auf Basis eines eigenen CSS Parsers, da (soweit ich weiß) alle bisherigen PHP basierten Parser reguläre Ausdrücke benutzen um das CSS auseinander zu nehmen, was dementsprechend fehleranfällig ist.
Um den Parser geht es mir hier allerdings weniger, ich wollte mal wissen, was ihr von dem Optimierer haltet oder ob ihr sogar einen Fehler findet :unsure:
Nur mal so als Vergleich: Das CSS von Winfuture lässt sich damit um ca. 50% verkleinern, mit Menschenverstand sitzt da aber nochmal 50% drin (also insgesamt 75%, das hatte ich aber schonmal erwähnt).

Link:
http://cdburnerxp.se...s_optimiser.php

Edit:
Mittlerweile gibt es auch eine ausführbare Datei und ein dazugehöriges Projekt auf sf.net, CSSTidy.

Ein paar Beispiele wie das Teil so optimiert, gilt für alle Eigenschaften und Selektoren (nicht nur margin und a ;) ):
  • Farben wie "black" oder rgb(0,0,0) werden zu #000000 und wenn möglich zu #000 umgewandelt, falls der Farbname kleiner ist wird dieser verwendet.
  • a {eigenschaft:x} b {eigenschaft:x} wird zu a,b {eigenschaft:x}
  • a {eigenschaft:x;eigenschaft:y} wird zu a {eigenschaft:y} (alles was doppelt ist wird eben zusammengefasst)
  • margin:1px 1px 1px 1px; wird zu margin:1px;
  • margin:1px 0px; wird zu margin:1px 0;
  • a {margin-top:10px;margin-bottom:10px;margin-left:10px;margin-right:10px;} wird zu a {margin:10px;}
  • margin:010.0px wird zu margin:10px (unnötige Nachkommastellen etc werden entfernt)
  • alle unnötigen Leerzeichen (white-space) werden entfernt, Ausmaß je nach "Komprimierungsstufe"
  • alle background-Eigenschaften werden zusammengefasst
  • alle Kommentare werden entfernt
  • letzter ; kann entfernt werden
  • verschiedene Fehler werden behoben wie fehlende Einheiten, falsche Farbnamen, fehlerhafte Zeilenumbrüche in Strings und fehlende ; sowie (nicht erlaubte) = anstatt :

Dieser Beitrag wurde von Floele bearbeitet: 12. Oktober 2005 - 20:19

0

Anzeige



#2 Mitglied ist offline   Meatwad 

  • Gruppe: aktive Mitglieder
  • Beiträge: 784
  • Beigetreten: 07. August 04
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:Bad Vilbel
  • Interessen:Computer, Inliner, Chatten...

geschrieben 17. Mai 2005 - 16:42

nice script, erstpaart mir bei jedem aufruf 1,44KB traffic! THX ALOT!
I am away to look for my self. If I am back before I return keep me here. | Mein Server
0

#3 Mitglied ist offline   Floele 

  • Gruppe: aktive Mitglieder
  • Beiträge: 919
  • Beigetreten: 22. Juni 04
  • Reputation: 0

geschrieben 17. Mai 2005 - 17:27

Hast du das von deinem Homeserver optimiert? Da ließe sich mit den Schriften nämlich noch was vereinfachen :unsure:
0

#4 Mitglied ist offline   Meatwad 

  • Gruppe: aktive Mitglieder
  • Beiträge: 784
  • Beigetreten: 07. August 04
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:Bad Vilbel
  • Interessen:Computer, Inliner, Chatten...

geschrieben 17. Mai 2005 - 18:29

ja, habe die von meinem server optimiert!
was ließe sich denn noch optimieren?
I am away to look for my self. If I am back before I return keep me here. | Mein Server
0

#5 Mitglied ist offline   Floele 

  • Gruppe: aktive Mitglieder
  • Beiträge: 919
  • Beigetreten: 22. Juni 04
  • Reputation: 0

geschrieben 17. Mai 2005 - 18:56

Machs mal so

body{
font:10px verdana,arial,"ms sans serif",sans-serif;
}

h3 {
font-size:16px;
line-height:18px;
padding-left:5px;
color:#e9f2fc;
margin:10px;
}

.smallheader {
font-size:10px;
padding-left:10px;
padding-right:5px;
line-height:14px;
color:#e9f2fc;
}

.small {
font-size:10px;
padding-left:5px;
line-height:14px;
color:#e9f2fc;
}

.info {
font-size:10px;
line-height:13px;
padding-left:5px;
color:#e9f2fc;
}

.infohead {
font-size:10px;
line-height:12px;
padding-left:20px;
color:#e9f2fc;
}

.newshead {
font-size:12px;
line-height:13px;
padding-left:5px;
color:#333;
}

input,textarea,select {
background-color:#CCC;
color:#333;
border-style:solid;
border-width:1px;
padding:0;
}

.quotesource,.quote {
display:block;
border:1px solid #888;
background-color:#D6DFE7;
margin:10px 20px;
padding:2px;
}

.banner,p,.historytable {
font-size:12px;
line-height:14px;
padding-left:20px;
text-align:justify;
color:#000;
margin:0 0 2ex;
}

a:link,a:visited,a:active,a:hover {
color:#707770;
text-decoration:none;
}


Dann ists noch ein bisschen kleiner :unsure:
0

#6 Mitglied ist offline   Meatwad 

  • Gruppe: aktive Mitglieder
  • Beiträge: 784
  • Beigetreten: 07. August 04
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:Bad Vilbel
  • Interessen:Computer, Inliner, Chatten...

geschrieben 17. Mai 2005 - 19:12

ja, danke ich habs eben getestet aba da ist einiges verrutscht... bei dem formular habe ich ein <table> gemacht und dann konnte ich kein <p> einbauen und somit sind die tags dann ganz verrutscht.....
I am away to look for my self. If I am back before I return keep me here. | Mein Server
0

#7 Mitglied ist offline   Floele 

  • Gruppe: aktive Mitglieder
  • Beiträge: 919
  • Beigetreten: 22. Juni 04
  • Reputation: 0

geschrieben 17. Mai 2005 - 19:45

OK, so müsste es aber dann stimmen.

body {
font-family:verdana,arial,"ms sans serif",sans-serif;
}

h3 {
font-size:16px;
line-height:18px;
padding-left:5px;
color:#e9f2fc;
margin:10px;
}

.smallheader {
font-size:10px;
padding-left:10px;
padding-right:5px;
line-height:14px;
color:#e9f2fc;
}

.small {
font-size:10px;
padding-left:5px;
line-height:14px;
color:#e9f2fc;
}

.info {
font-size:10px;
line-height:13px;
padding-left:5px;
color:#e9f2fc;
}

.infohead {
font-size:10px;
line-height:12px;
padding-left:20px;
color:#e9f2fc;
}

.newshead {
font-size:12px;
line-height:13px;
padding-left:5px;
color:#333;
}

input,textarea,select {
background-color:#CCC;
font-family:verdana,arial,sans-serif;
font-size:10px;
color:#333;
border-style:solid;
border-width:1px;
padding:0;
}

.quotesource,.quote {
display:block;
border:1px solid #888;
background-color:#D6DFE7;
margin:10px 20px;
padding:2px;
}

.banner,p,.historytable {
font-size:12px;
line-height:14px;
padding-left:20px;
text-align:justify;
color:#000;
margin:0 0 2ex;
}

a:link,a:visited,a:active,a:hover {
color:#707770;
text-decoration:none;
}

0

#8 Mitglied ist offline   Meatwad 

  • Gruppe: aktive Mitglieder
  • Beiträge: 784
  • Beigetreten: 07. August 04
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:Bad Vilbel
  • Interessen:Computer, Inliner, Chatten...

geschrieben 17. Mai 2005 - 20:03

das ging auch nicht aber dann habe ich etwas im code von der page verändert un nu gehts super! DANKE MAN! echt geil das script!

ich hatte vorher 2,41KB und jetzt nurnoch 1,11KB(!!!) für die css...


thx^^
I am away to look for my self. If I am back before I return keep me here. | Mein Server
0

#9 Mitglied ist offline   Slayer 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.476
  • Beigetreten: 12. Dezember 03
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:Baden-Württemberg
  • Interessen:&gt; Internet<br />&gt; Musik<br />&gt; Filme<br />&gt; Events

geschrieben 17. Mai 2005 - 21:25

Ich kenne den CSS Optimierer schon ein wenig länger und nutze ihn auch immer wieder.
Muss sagen, dass Floele sich da wirklich große Mühe gegeben hat und dieses Script hat noch gefehlt.
Es ist wirklich immer sinnvoll und es stimmt auch alles wirklich.

Bin mal gespannt, ob da jemand einen Fehler findet :8):

Respekt, Floele, das hast du gut gemacht.
Dieses Script sollte mehr bekannt werden!
Der Mensch hat drei Wege, klug zu handeln.
Erstens durch Nachdenken: Das ist der Edelste.
Zweitens durch Nachahmen: Das ist der Leichteste.
Drittens durch Erfahrung: Das ist der Bitterste.

(Konfuzius)
0

#10 Mitglied ist offline   Floele 

  • Gruppe: aktive Mitglieder
  • Beiträge: 919
  • Beigetreten: 22. Juni 04
  • Reputation: 0

geschrieben 17. Mai 2005 - 21:40

Zitat (Corey: 17.05.2005, 22:25)

Dieses Script sollte mehr bekannt werden!
<{POST_SNAPBACK}>


Joa, das könnte nicht schaden. Um den Bekanntheitsgrad kümmere ich mich aber erst wenn ich es als fertig einschätze. Bei Google ist das Teil doch schon ganz gut positioniert :8):
0

#11 Mitglied ist offline   Urza 

  • Gruppe: aktive Mitglieder
  • Beiträge: 255
  • Beigetreten: 16. September 04
  • Reputation: 0
  • Wohnort:Dominaria/Aventurien

geschrieben 18. Mai 2005 - 14:34

Zitat (Floele: 17.05.2005, 16:53)

Vor einiger Zeit hab ich mich mal an die Arbeit gemacht, einen CSS Optimierer und Formatierer zu entwickeln, und zwar auf Basis eines eigenen CSS Parsers, da (soweit ich weiß) alle bisherigen PHP basierten Parser reguläre Ausdrücke benutzen um das CSS auseinander zu nehmen, was dementsprechend fehleranfällig ist.
<{POST_SNAPBACK}>



um doch mal darauf zu sprechen zu kommen ^^ wie hast du denn den parser geschrieben? und wie hast du ihn eingebunden?
0

#12 Mitglied ist offline   Floele 

  • Gruppe: aktive Mitglieder
  • Beiträge: 919
  • Beigetreten: 22. Juni 04
  • Reputation: 0

geschrieben 18. Mai 2005 - 15:29

Also wie ich den geschrieben habe, kannst du ja selbst nachgucken. Im Großen und Ganzen funktioniert er so, dass er mit einer for-Schleife jedes einzelne Zeichen durchgeht und je nach Kontext dann entsprechende Aktionen durchführt. Der Parser hat sozusagen verschiedene Modi ("im String", "in Eigenschaft", "in Selektor", usw.) in denen verschiedene Zeichen verschiende Bedeutungen haben.

Über das Einbinden werde ich wohl noch was schreiben, kurzgefasst sieht es so aus:

include('parser.inc.php');
$css = new csstidy();

if($css->parse('text')) // falls das CSS ausreichend wohlgeformt ist
{
 echo $css->print_code();
}

Dieser Beitrag wurde von Floele bearbeitet: 21. August 2005 - 10:00

0

#13 Mitglied ist offline   Slayer 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.476
  • Beigetreten: 12. Dezember 03
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:Baden-Württemberg
  • Interessen:&gt; Internet<br />&gt; Musik<br />&gt; Filme<br />&gt; Events

geschrieben 18. Mai 2005 - 16:59

Würde mich auch mal interessieren, wie man so eine Klasse dann einbindet ;)
Dein oberer Beitrag zeigt das ja schon ganz simpel, aber wie sieht das dann ausführlich aus :angry:

Dieser Beitrag wurde von Corey bearbeitet: 18. Mai 2005 - 17:04

Der Mensch hat drei Wege, klug zu handeln.
Erstens durch Nachdenken: Das ist der Edelste.
Zweitens durch Nachahmen: Das ist der Leichteste.
Drittens durch Erfahrung: Das ist der Bitterste.

(Konfuzius)
0

#14 Mitglied ist offline   Floele 

  • Gruppe: aktive Mitglieder
  • Beiträge: 919
  • Beigetreten: 22. Juni 04
  • Reputation: 0

geschrieben 18. Mai 2005 - 17:15

Naja, im Prinzip ist das Beispiel von mir voll funktionsfähig. Welche Daten du dem Parser und übergibst ist natürlich dir überlassen. Das Ding hat natürlich auch noch zusätzliche Funktionen (um Templates zu laden etc.) aber das erkläre ich dann wenn es fertig ist :angry:
0

#15 Mitglied ist offline   Slayer 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.476
  • Beigetreten: 12. Dezember 03
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:Baden-Württemberg
  • Interessen:&gt; Internet<br />&gt; Musik<br />&gt; Filme<br />&gt; Events

geschrieben 18. Mai 2005 - 17:17

Zitat (Floele: 18.05.2005, 18:15)

Naja, im Prinzip ist das Beispiel von mir voll funktionsfähig. Welche Daten du dem Parser und übergibst ist natürlich dir überlassen. Das Ding hat natürlich auch noch zusätzliche Funktionen (um Templates zu laden etc.) aber das erkläre ich dann wenn es fertig ist :angry:
<{POST_SNAPBACK}>

Kannst es ja auch auf die Homepage machen, wäre wirklich sehr sinnvolll ;)
Finde ich gut von dir, dass du nichts "zu verbergen hast".

Bin schon total gespannt und werde deinen Parser und Optimierer nun für alle meine CSS Codes benutzen ;)

Also großes Danke dafür!
Der Mensch hat drei Wege, klug zu handeln.
Erstens durch Nachdenken: Das ist der Edelste.
Zweitens durch Nachahmen: Das ist der Leichteste.
Drittens durch Erfahrung: Das ist der Bitterste.

(Konfuzius)
0

Thema verteilen:


  • 3 Seiten +
  • 1
  • 2
  • 3

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0