gelöschter Benutzer

[PLG] Minify HTML

am 03.08.2010, 00:19 Uhr eröffnete folgenden Thread
Joomla    2123 mal gelesen    5 Antwort(en).

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.

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


UFOMelkor
Avatar UFOMelkor
Student
Content Meister (350 Beiträge)
am 03.08.2010, 00:36 Uhr schrieb UFOMelkor

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.


Naturkosmetik in Bochum

Steppenhahn Ultramarathon-Community

romacron
JDev Xer
Content Gott (1224 Beiträge)
am 03.08.2010, 06:49 Uhr schrieb romacron

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?



gelöschter Benutzer
am 03.08.2010, 07:31 Uhr schrieb

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


UFOMelkor
Avatar UFOMelkor
Student
Content Meister (350 Beiträge)
am 03.08.2010, 10:35 Uhr schrieb UFOMelkor

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
/**
* 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 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:EBUG);
return $this;
}
}


Naturkosmetik in Bochum

Steppenhahn Ultramarathon-Community


gelöschter Benutzer
am 03.09.2010, 23:46 Uhr schrieb

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


  • 1


« zurück zu: Joomla

Das Seitenreport Forum hat aktuell 5273 Themen und 36107 Beiträge.
Insgesamt sind 48345 Mitglieder registriert.