[PLG] Minify HTML
| Verfasst am: 03. 08. 2010 [00:19] | |||
Ultima Dabei seit: 09.07.2010 Themenersteller ![]() 759 Beiträge | Beitrag hilfreich? | ||
| Hi @ all, ich hab mal versucht ein kleines Joomla Plugin zu schreiben, das den Ausgabe HTML-Code minimiert, in dem alle unnötigen Whitespaces raus gelöscht werden. PRE und CODE Blöcke bleiben davon verschont. Style angaben und Script werden gesondert minimiert. Das ganze ist ist für Joomla 1.5.x Versionen. An sehen könnte Ihr euch das ganze auf meiner Homepage und runter laden auch. http://ultima-project.net/downloads/view.download/7/2.html Das ganze einfach über den Erweiterungsmanager Installieren und in der Pluginliste aktivieren und wenn möglich auf die letzte Position setzen. Es ist gut möglich das es noch Bugs gibt, ich teste das ganze gerade selber ausführlich. Für Erweiterungsvorschläge hab ich immer ein offenes Ohr, ansonsten viel Spaß damit. Gruß Ultima Mein Portal: Ultima-Project.net - Gold für alle | |||
| Verfasst am: 03. 08. 2010 [00:36] | |||
UFOMelkor Dabei seit: 20.10.2009 ![]() 348 Beiträge | Beitrag hilfreich? | ||
| Hallo Ultima, ich habe nur kurz drübergeschaut, zwei Dinge als Verbesserungsvorschläge: Conditional-Comments könntest du berücksichtigen, wenn ich das richtig sehe, werden sie im Moment mit sämtlichen Kommentaren entfernt. Vieles von dem, was du da durchführst, kann man auch mit tidy erreichen. Ich könnte mir vorstellen, dass tidy ein wenig performanter ist als Reguläre Ausdrücke, weiß ich aber nicht sicher. Falls das der Fall ist, wäre es eventuell einer Überlegung, zu überprüfen ob die tidy vorhanden ist und im Zweifelsfall mit tidy zu arbeiten. | |||
| Verfasst am: 03. 08. 2010 [06:49] | |||
romacron Dabei seit: 01.11.2009 ![]() 1143 Beiträge | Beitrag hilfreich? | ||
| Hallo Ultima, Es gibt bereits in der sef.php einen ähnlich aufwendigen Replacer(für Links, Bilder usw.) Was hältst Du davon Dein plugin eher als Upgrade zu bauen(die Integration in die sef.php)? Dann spart man einige Replaces Oder das Plugin nur für das Caching bereit zustellen? [Dieser Beitrag wurde 1mal bearbeitet, zuletzt am 03.08.2010 um 06:55.] | |||
| Verfasst am: 03. 08. 2010 [07:31] | |||
Ultima Dabei seit: 09.07.2010 Themenersteller ![]() 759 Beiträge | Beitrag hilfreich? | ||
| Ha erwischt, das mit den Conditional-Comments stimmt die hab ich vergessen zu berücksichtigen. Die SEF kenn ich allerdings wollte ich auch mal ein eigenes Plugin schreiben. Ich werde mir das ganze mal in ruhe durch den Kopf gehen lassen. Ich werde dann jetzt erst mal den Bug fixen. THX Gruß Thomas Mein Portal: Ultima-Project.net - Gold für alle | |||
| Verfasst am: 03. 08. 2010 [10:35] | |||
UFOMelkor Dabei seit: 20.10.2009 ![]() 348 Beiträge | Beitrag hilfreich? | ||
| Ich nutze ein ähnliches Plugin (allerdings nicht für Joomla) das mit tidy arbeitet. Ist ein ganz nettes Teil, auf das ich persönlich nicht mehr verzichten möchte, schon allein wenn es um das Aufspüren von Fehlern geht. Einziges Problem: Es kann nicht mit Html-Kommentaren innerhalb von JavaScript umgehen, da so etwas bei mir bisher nicht vorgekommen ist. Vielleicht dient es ja irgendjemanden als Anregung; PHP <?php /** * Optimiert den ausgegebenen Quelltext. */ class Plugin_Tidy extends Zend_Controller_Plugin_Abstract { /** * {@inheritDoc} * * @return void */ public function dispatchLoopShutdown() { if (!$this->_canOptimizeContent()) { return; } $oTidy = $this->_getTidy( $this->_removeHtmlComments( $this->_getContent())); if ($this->_isLogginEnabled()) { $this->_logErrors($oTidy); } $oTidy->cleanRepair(); $this->_setContent($oTidy); } /** * Kann der aktuell gesetzte Inhalt überhaupt optimiert werden? * Von Bildern oder ähnlichem sollte man die Finger lassen. * * @return boolean */ protected function _canOptimizeContent() { if (count($this->getResponse()->getHeaders()) > 0) { foreach ($this->getResponse()->getHeaders() AS $aHeader) { if ($aHeader['name'] === 'Content-Type') { return false; } } } return true; } /** * Sollen die Fehler mitgeloggt werden? * * @return boolean */ protected function _isLogginEnabled() { return (APPLICATION_ENV !== 'production'); } /** * Gibt den zu optimierenden Quelltext zurück. * * @return string */ protected function _getContent() { return $this->getResponse()->getBody(); } /** * Setzt den neuen Quelltext. * * @param tidy $oTidy * @return Plugin_Tidy */ public function _setContent(tidy $oTidy) { $this->getResponse()->setBody((string) $oTidy); return $this; } /** * Entfernt die Kommentare aus dem Quelltext, belässt aber CCs. * * @param string $sText * @return string */ protected function _removeHtmlComments($sText) { return preg_replace('//isU', '', $sText); } /** * Gibt das Tidy-Objekt zurück. * * @param string $sText * @return tidy */ protected function _getTidy($sText) { return tidy_parse_string($sText, $this->_getTidyOptions(), 'utf8'); } /** * Gibt die Optionen für tidy zurück. * * @return array */ protected function _getTidyOptions() { return array( 'accessibility-check' => 3, //Zugänglichkeit 'drop-proprietary-attributes' => true, //Entfernen von unschönen Attributen 'drop-empty-paras' => true, //Entfernen von leeren Paragraphen 'hide-comments' => false, //Kommentare entfernen wir selber 'hide-endtags' => true, //Endtags sollten für XHTML gesetzt werden 'indent' => false, //Einrücken benötigen wir nicht 'indent-attributes' => false, //Attribute müssen auch nicht eingerückt werden 'output-xhtml' => true, //Als Ausgabe wollen wir schönes XHTML haben 'wrap' => 0, //Wir benötigen keine zusätzlichen Zeilenumbrüche ); } /** * Loggt die Fehler im Quelltext. * * @param tidy $oTidy * @return Plugin_Tidy */ protected function _logErrors(tidy $oTidy) { $oTidy->diagnose(); $this->_doLog('For accessibility errors look at http://www.aprompt.ca/Tidy/accessibilitychecks.html'); foreach ($this->_getErrors($oTidy) AS $sError) { $this->_doLog($sError); } return $this; } /** * Gibt die von tidy im Quelltext gefundenen Fehler zurück. * * @param tidy $oTidy * @return array */ protected function _getErrors(tidy $oTidy) { $aLines = array_reverse(explode("\n", $oTidy->errorBuffer)); array_shift($aLines); return $aLines; } /** * Loggt einen Fehler. * * @param string $sText * @return Plugin_Tidy */ protected function _doLog($sText) { Zend_Registry::get('Zend_Log')->log($sText, Zend_Log:<img src="typo3conf/ext/mm_forum//res/smilies/icon_biggrin.gif" alt="icon_biggrin.gif" />EBUG); return $this; } } | |||
| Verfasst am: 03. 09. 2010 [23:46] | |||
Ultima Dabei seit: 09.07.2010 Themenersteller ![]() 759 Beiträge | Beitrag hilfreich? | ||
| So ich hab das ganze jetzt noch einmal überarbeitet, die Javascript Bugs sollten jetzt alle gefixt sein. Falls doch noch ein Fehler sein sollte kann man das Minimieren von Javascript oder Css jetzt über die Pluginparameter ein und aus schalten. Gruß Thomas Mein Portal: Ultima-Project.net - Gold für alle | |||
Du bist nicht eingeloggt. Bitte beachte, dass Du eingeloggt sein musst, um Themen zu erstellen oder auf Beiträge zu antworten.
Werde in Echtzeit über neue Foren-Beiträge informiert:
2 Mitglieder waren innerhalb der letzten 15 Minuten online (22 heute gesamt):
copudor, Plylaia
Administratoren und Moderatoren:
[keine]
Seitenreport hat 18152 registrierte Mitglieder, 3003 Themen und 29112 Beiträge.
Der aktuelle Mitgliederzuwachs liegt bei durchschnittlich 12 bestätigten Neuregistrierungen pro Tag.
Pro Tag werden im Seitenreport Forum durchschnittlich 1 neues Thema und 7 Beiträge erstellt.
Die Durchschnittszahlen berechnen sich aus den letzten 7 Tagen.

Lade...
Neueste Foren-Beiträge
| Abstimmung: 20.000 Mitglieder Jubiläum - was tun? Internes & Ankündigungen / Internes | Gestern [23:07] | |
| Microsofts soziales Netzwerk So.cl Internet / News | Gestern [20:03] | |
| Nicht nachvollziehbarer CSS Fehler Internes & Ankündigungen / Analyse-Ergebnisse | Gestern [13:37] | |
| Partnerprogramm: Eintrag für Kunden erledigt Internes & Ankündigungen / Internes | 22. 05. 2012 [10:35] | |
| Hotelbericht Entwickler Treffpunkt / Website vorstellen | 22. 05. 2012 [09:28] |
Lade...
Aktuelle Artikel:
Facebook - eine neue Tech-Blase?
Facebook ist in den vergangenen Tagen wegen seines Börsenganges und den dabei eingefahrenen Investorengeldern von 16 Milliarden Dollar großflächig in die Kritik geraten. Der Marktwert von 104 Milliarden Dollar wird von vielen als maßlos übertrieben angesehen. Ist Facebook eine neue Internet-Blase, die in den nächsten Jahren platzen wird?
Suchmaschinenoptimierung seit dem Google Penguin Update
Das neue Update vom Branchenriesen Google wird in Seo-Kreisen gerne mit einem Erdbeben verglichen. Diese Metapher trifft die Sachlage sehr gut, denn der Pinguin bringt die Arbeitsfundamente der Suchmaschinenoptimierer gehörig ins Wanken.
Tipps für den guten Start ins Business
Sich selbstständig machen, eine Firma gründen und direkt ins eigenständige Berufsleben einzusteigen klingt spannend und irgendwie auch einfach. Doch einfach ist es ganz und gar nicht...
Facebook - eine neue Tech-Blase?
Facebook ist in den vergangenen Tagen wegen seines Börsenganges und den dabei eingefahrenen Investorengeldern von 16 Milliarden Dollar großflächig in die Kritik geraten. Der Marktwert von 104 Milliarden Dollar wird von vielen als maßlos übertrieben angesehen. Ist Facebook eine neue Internet-Blase, die in den nächsten Jahren platzen wird?
18. Mai 2012
Suchmaschinenoptimierung seit dem Google Penguin Update
Das neue Update vom Branchenriesen Google wird in Seo-Kreisen gerne mit einem Erdbeben verglichen. Diese Metapher trifft die Sachlage sehr gut, denn der Pinguin bringt die Arbeitsfundamente der Suchmaschinenoptimierer gehörig ins Wanken.
15. Mai 2012
Tipps für den guten Start ins Business
Sich selbstständig machen, eine Firma gründen und direkt ins eigenständige Berufsleben einzusteigen klingt spannend und irgendwie auch einfach. Doch einfach ist es ganz und gar nicht...
14. Mai 2012


