Du bist nicht angemeldet. Der Zugriff auf einige Boards wurde daher deaktiviert.

#1 26. November 2010 10:19

piratos
Gast

[GELÖST] Speedprobleme verursacht durch den Menumanager

Wer sich das einmal durchliest:

http://forum.cmsmadesimple.org/index.ph … 89.new#new

und sich dazu die Sitemap der betreffenden Website ansieht:

http://www.festtagsgedichte.de/sitemap.htm

stellt zunächst mal fest - der hat eine Menge Seiten.

Der Betreiber hat erhebliche Speedprobleme und sogar den Übeltäter eingekreist:

(mysql): SELECT id_hierarchy,content_alias FROM cmsms_content ORDER BY hierarchy

Debug display of 'Start Loading Children into Tree':(0.20608) - (usage: 11332276) - (peak: 11357408)
Debug display of 'End Loading Children into Tree':(19.493117) - (usage: 14370512) - (peak: 15282904)
Debug: (19.493183) - (usage: 14370700) - (peak: 15282904)

Tatsächlich ist der Menumanager für Websites mit derart viel Inhalten absolut ungeeigent - aber es steht keine Alternative zur Verfügung.

Die Ursache - jedes Child verursacht eine erneute DB Abfrage und das alles in Schleifen in denen mittels PHP der ganze Kram aufbereitet wird.

Was hier fehlt ist die Angabe der DB Zugriffe - es dürften hunderte sein vermute ich.

Tatsächlich ist CMSMS  bei einer deart hohen Seitenanzahl die in sich sauber struktuiert sind allein wegen dieses Menumanager nicht geeigent.

#2 26. November 2010 11:06

jeff1980
Server-Pate
Ort: Dortmund
Registriert: 26. November 2010
Beiträge: 630

Re: [GELÖST] Speedprobleme verursacht durch den Menumanager

Hi,

ja, das ist mein Post. Wusste ehrlich gesagt noch gar nicht, dass es nun auch auf cmsmadesimple.de ein Forum gibt.
Das Problem tritt allerdings erst mit der neuen Version 1.9.1 auf. Vorher war alles ok.
Ich hab den kompletten Debug-Code mal hochgeladen:
Debug_191.txt

Hoffe, dass es evtl. eine Lösung gibt. Ich helfe auch mit wo ich kann. Wenn mehr Infos benötigt werden, sagt es einfach.

Jan

Offline

#3 26. November 2010 11:39

piratos
Gast

Re: [GELÖST] Speedprobleme verursacht durch den Menumanager

Generated in 18.775652 seconds by CMS Made Simple using 209 SQL queries and 39905848 bytes of memory (peak memory usage was 41044868)

Man schaue sich einmal die eigentlich gigantische Menge von Abfragen an und man kann genau erkennen das es der Menumanager ist.

Und dann schaue man sich an wie die Zwischenabfragen gemacht werden, denn die werden zwischendurch per PHP aufbereitet.

SELECT * FROM cmsms_content WHERE content_id IN (169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,205,207,210,212) ORDER BY hierarchy

und dann genau hier an allen Ecken und Enden

mysql): SELECT * FROM cmsms_content WHERE content_id IN (488,487,469,382,482,458,390) ORDER BY hierarchy

Debug: (18.21683) - (usage: 34368944) - (peak: 34402116)

(mysql): SELECT * FROM cmsms_content_props WHERE content_id = '590'

hier meine ich SELECT *  -  der Programmierer muss tatsächlich vom Motorrad gefallen und mit dem Kopf hart aufgeschlagen sein - denn es wird für die Aufbereitung des Menüs der komplette Inhalt geladen und wirklich alles - das erklärt auch den teils gigantischen RAM Bedarf.

Ich kann hier mein Plugin powermenu zur Verfügung stellen, das erledigt alles mit einer einzigen Abfrage, mit breadcrumbs sind es zwei.

Datenaufbau ist sehr ähnlich aber nicht gleich, müsstes somit deine Menütemplates anpassen:

<?php

#-------------------------------------------------------------------------
# Smarty Plugin: powermenu
# Version: 1.9 CMSMS Variante
#
#-------------------------------------------------------------------------
# This is (c) 2006 by Jan Alfred Czarnowski (czarnowski@powercms.eu)
# This project's homepage is: http://www.powercms.org 
#
#-------------------------------------------------------------------------
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
# Or read it online: http://www.gnu.org/licenses/licenses.html#GPL
#
#-------------------------------------------------------------------------

function smarty_function_powermenu($params, &$smarty) {
    global $gCms;
    $memcache = false;
    $sprache = 'pcms';
    $config = $gCms->config;
    $db = $gCms->GetDb();
    $oldlevel = 0;
    
    $br = isset($params['bc']) ? $params['bc'] : true;
    $mok = true;
    $anzahl = isset($params['anzahl']) ? $params['anzahl'] : 4;
    $page_id = $gCms->variables['pageinfo']->content_id;
    $filename = $config['previews_path'] . '/' . $sprache . '_powercmsmenu';
    if ($memcache) {
        $rows = $memcache->get($filename);
    } elseif (file_exists($filename)) {
        $fh = fopen($filename, 'r');
        $rows = unserialize(fread($fh, filesize($filename)));
        fclose($fh);
        $c = count($rows);
        if ($rows[$c - 1] == '')
            unset($rows[$c - 1]);
    }
    else
        $rows = false;

    $page_hierarchy = $gCms->variables['position'];
    $h_ar = explode('.', $page_hierarchy);
    if (count($h_ar) == 0)
        $h_ar[] = $page_hierarchy;
    if ($rows == false && $mok) {
        $teil1 = ", case type when 'link' then (select content from " . $config['db_prefix'] . "content_props where " . $config['db_prefix'] . "content.content_id=" . $config['db_prefix'] . "content_props.content_id and " . $config['db_prefix'] . "content_props.prop_name='url') else '' end as url";
        $sql = "SELECT  SUBSTRING(hierarchy,1,5) as firsthierarchy,SUBSTRING(hierarchy,7,5) as secondhierarchy,SUBSTRING(hierarchy,13,5) as thirdhierarchy,SUBSTRING(hierarchy,20,5) as fourthhierarchy ,SUBSTRING(hierarchy,27,5) as fifthhierarchy , CHAR_LENGTH(hierarchy) - CHAR_LENGTH(REPLACE(hierarchy,'.','')) +1 as level, hierarchy,content_id,owner_id,template_id,content_name,type,parent_id,menu_text,content_alias,tabindex,accesskey,titleattribute,active,show_in_menu,metadata $teil1 FROM " . $config['db_prefix'] . "content   WHERE active=1 AND show_in_menu= 1 ORDER BY hierarchy";
        echo $sql;
        $rows = $db->GetArray($sql);var_dump($rows);
        if ($memcache)
            $memcache->set($filename, $rows,MEMCACHE_COMPRESSED,3600);
        else {
            $f = fopen($filename, 'wb');
            fwrite($f, serialize($rows));
            fclose($f);
        }
    }

    $c = count($rows);
    $menu = array();
    $nextpage = false;
    $prevpage = false;
    $currentpage = -1;
    if ($c >= 1) {
        $j = 0;
        $oldp = $rows[$j]['hierarchy'];

        while ($j < $c) {
            if (isset($rows[$j + 1]) && strpos($rows[$j + 1]['hierarchy'], $oldp) === 0)
                $rows[$j]['parent'] = true;
            else
                $rows[$j]['parent'] = false;
            if ($rows[$j]['content_id'] == $page_id) {
                $rows[$j]['current'] = true;
                $currentpage = $j;
                $smarty->assign('page_hierarchy', $rows[$j]['hierarchy']);
            }
            else
                $rows[$j]['current'] = false;
            if ($j == 0) {
                $oldlevel = $rows[$j]['level'];
                $rows[$j]['prevlevel'] = $oldlevel;
                $menu[] = $rows[$j];
            } else {
                $newlevel = $rows[$j]['level'];
                $rows[$j]['prevlevel'] = $oldlevel;
                $menu[] = $rows[$j];
                $oldlevel = substr_count($rows[$j]['hierarchy'], '.') + 1;
            }
            if ($rows[$j]['current'] == true)
                $smarty->assign('currentpage', $rows[$j]);
            $j++;
            if (isset($rows[$j]['hierarchy']))
                $oldp = $rows[$j]['hierarchy'];
        }
    }

    if ($currentpage > -1) {
        if ($currentpage < $c - 1) {
            $nextpage = $rows[$currentpage + 1];
            $max_r = count($rows);
            $m_i = $currentpage + 1;
            while ($nextpage['type'] <> 'content' and $m_i < $max_r - 1) {
                $m_i++;
                $nextpage = $rows[$m_i];
            }

            $nextpage['menu_text'] = $nextpage['original_menu_text'];
        }
        if ($currentpage > 0) {
            $prevpage = $rows[$currentpage - 1];
            $max_r = count($rows);
            $m_i = $currentpage - 1;
            while ($prevpage['type'] <> 'content' and $m_i > 0) {
                $m_i--;
                $prevpage = $rows[$m_i];
            }
            $prevpage['menu_text'] = $prevpage['original_menu_text'];
        }
    }

    if ($br) {
        $filename2 = $config['previews_path'] . '/' . $sprache . '_powercmsmenu_b' . $page_hierarchy;
        if ($memcache)
            $rows = $memcache->get($filename2);
        elseif (is_file($filename2)) {
            $fh = fopen($filename2, 'r');
            $rows = unserialize(fread($fh, filesize($filename2)));
            fclose($fh);
            $c = count($rows);
            if ($rows[$c - 1] == '')
                unset($rows[$c - 1]);
        }
        else {
            $h_ar = explode('.', $page_hierarchy);
            if (count($h_ar) == 0)
                $h_ar[] = $page_hierarchy;
            $hcount = count($h_ar);
            $teil2 = '';
            if ($hcount == 1)
                $teil2 = " hierarchy='" . $h_ar[0] . "' OR default_content=1) ORDER BY hierarchy ";
            else {
                $teil2 = "";
                $i = 0;
                while ($i < $hcount) {
                    $j = 0;
                    $i++;
                    $str = '';
                    while ($j < $i) {
                        $x = $i - 1;
                        $str .= $h_ar[$j];
                        if ($j < $x)
                            $str .= '.';

                        $j++;
                    }
                    if ($i == 1)
                        $teil2 .= " hierarchy = '$str'";
                    else
                        $teil2 .= " OR hierarchy = '$str'";
                }
                $teil2 .= " OR default_content=1) ORDER BY hierarchy";
            }

            $sql = "SELECT  DISTINCT SUBSTRING(hierarchy,1,5) as firsthierarchy,SUBSTRING(hierarchy,7,5) as secondhierarchy,SUBSTRING(hierarchy,13,5) as thirdhierarchy,SUBSTRING(hierarchy,20,5) as fourthhierarchy ,SUBSTRING(hierarchy,27,5) as fifthhierarchy ,CHAR_LENGTH(hierarchy) - CHAR_LENGTH(REPLACE(hierarchy,'.','')) +1 as level,content_id,hierarchy,menu_text,content_alias,titleattribute,default_content FROM " . $config['db_prefix'] . "content USE INDEX(hierarchy) WHERE active=1 AND show_in_menu= 1 AND (" . $teil2;
            $rows = $db->GetArray($sql);
            if ($memcache)
                $memcache->set($filename2, $rows,MEMCACHE_COMPRESSED,3600);
            else {
                $f = fopen($filename2, 'wb');
                fwrite($f, serialize($rows));
                fclose($f);
            }
            $i = 0;
            $cc = count($rows);

            while ($i < $cc) {
                if ($rows[$i]['content_id'] == $page_id)
                    $rows[$i]['current'] = 1; else
                    $rows[$i]['current'] = 0;
                $i++;
            }
        }
        $smarty->assign('breadcrumbs', $rows);
    }
    $smarty->assign('nextpage', $nextpage);
    $smarty->assign('prevpage', $prevpage);
    $smarty->assign('count', $c);
    $smarty->assign('menu', $menu);
    $smarty->assign('root_path', $config['root_path']);
    $smarty->assign('root_url', $config['root_url']);
    $smarty->assign('page_id', $page_id);
    $smarty->assign('query_var', $config['query_var']);
}

?>

#4 26. November 2010 11:56

Andynium
Moderator
Ort: Dohna / SN / Deutschland
Registriert: 13. September 2010
Beiträge: 7.018
Webseite

Re: [GELÖST] Speedprobleme verursacht durch den Menumanager

jeff1980 schrieb:

Wusste ehrlich gesagt noch gar nicht, dass es nun auch auf cmsmadesimple.de ein Forum gibt.

Ist ja auch noch relativ neu wink .

Das Problem tritt allerdings erst mit der neuen Version 1.9.1 auf. Vorher war alles ok.

Der neue MenüManager verfügt über einen Caching-Modus. Hast du den mal aktiviert?

Offline

#5 26. November 2010 11:59

Andynium
Moderator
Ort: Dohna / SN / Deutschland
Registriert: 13. September 2010
Beiträge: 7.018
Webseite

Re: [GELÖST] Speedprobleme verursacht durch den Menumanager

piratos schrieb:

Datenaufbau ist sehr ähnlich aber nicht gleich, müsstes somit deine Menütemplates anpassen:

Der Vollständigkeit halber solltest du auch noch auf deinen display-Tag verweisen wink.

Offline

#6 26. November 2010 12:07

piratos
Gast

Re: [GELÖST] Speedprobleme verursacht durch den Menumanager

cyberman schrieb:

Der Vollständigkeit halber solltest du auch noch auf deinen display-Tag verweisen wink.

Ja da kennt sich ja jemand mit P... aus  , der display tag ist für mich so etwas von selbstverständlich das ich den komplett vergessen habe - cmsms kennt das ja nicht.

Powermenu macht keine Ausgaben sondern beschafft nur die Daten, also bei einem Einsatz im Hauptemplate ganz oben einsetzen damit Daten auch da sind, wenn Menüteile aufgerufen werden.

<?php
#-------------------------------------------------------------------------
# Smarty Plugin: display
# Version: 1.2
#
#-------------------------------------------------------------------------
# This is (c) 2006 by Jan Alfred Czarnowski (czarnowski@powercms.org)
# This project's homepage is: http://www.powercms.org 
#
#-------------------------------------------------------------------------
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
# Or read it online: http://www.gnu.org/licenses/licenses.html#GPL
#
#-------------------------------------------------------------------------


function smarty_function_display($params, &$smarty) {
    if (empty($params['template'])) {
        $smarty->_trigger_fatal_error("[plugin] parameter 'template' muss eine Templatedatei beinhalten !");
        return;
    }
    if (isset($params['vars']) && $params['vars'] <> '' && isset($params['values']) && $params['values'] <> '') {
        $vars = explode(',',$params['vars']);
        $values = explode(',',$params['values']);
        $cvars = count($vars);
        $cvalues = count($values);
        if($cvars == $cvalues) {
            $i = -1;
            while ($i <  $cvars) {
                $i++;
                $smarty->assign($vars[$i], $values[$i]);
            }
        }
    }

    if (isset($params['assign']) && $params['assign'] <> '') {
        $result = $smarty->fetch($params['template']);
        $smarty->assign($params['assign'], $result);
        return '';
    }
    else
        $smarty->display($params['template']);

}


?>

Aufruf in Templates oder Inhalten

{display template='namedestemplates'} 

alternativ

{display template='namedestemplates' assign='name_der_neuen_smarty_var'}

Bei assign wird das Template gefetcht und als Variable zugewiesen.

Caching bei powermenu ist seit Jahren Standard.

#7 26. November 2010 14:10

dc2
kennt CMS/ms
Registriert: 26. November 2010
Beiträge: 140
Webseite

Re: [GELÖST] Speedprobleme verursacht durch den Menumanager

Da mich das auch schon geärgert hat, habe ich mir vor einiger Zeit mal einen eigenen UDT dazu geschrieben:

$menu = '{menu template="Minimal" start_level="1" loadprops="0"}';
$filename = 'mainmenu.cache';
$droot = dirname(dirname(__FILE__));

if($params['show'] == true) {
    $filename = $droot.'/tmp/'.$filename;
    readfile($filename);
} else {
    $droot = dirname($droot);
    $filename = $droot.'/tmp/'.$filename;
    
    global $gCms;
    
    $smarty = &$gCms->GetSmarty();
    $smarty->_compile_source('temporary template', $menu, $_compiled );
    @ob_start();
    $smarty->_eval('?>' . $_compiled);
    $_contents = @ob_get_contents();
    @ob_end_clean();
    $_contents;
    $data = trim(rtrim($_contents));

    file_put_contents($filename, $data);
}

Dieser Tag muss per Event-Manager beim Ändern / Anlegen und Löschen von Inhalten gestartet werden und kann danach im Template eingebunden werden. Beim Einbinden muss der Parameter "show=true" gesetzt werden.

Wenn allerdings die Erstellung des Menüs 18 Sekunden in Anspruch nimmt, sollte man vielleicht überlegen auf Piratos Plugin zurückzugreifen - ich werd mir das ganze auch gleich mal ansehen smile

Beitrag geändert von dc2 (26. November 2010 14:18)

Offline

#8 26. November 2010 15:55

jeff1980
Server-Pate
Ort: Dortmund
Registriert: 26. November 2010
Beiträge: 630

Re: [GELÖST] Speedprobleme verursacht durch den Menumanager

cyberman schrieb:

Der neue MenüManager verfügt über einen Caching-Modus. Hast du den mal aktiviert?

Das habe ich schon ausprobiert - leider ohne Erfolg. Es sein denn, man muss mehr machen, als das Häkchen im Menümanager zu setzen.

Powermenu hört sich aber auch interessant an, da die Menüs auf unserer Seite ja echt enorm sind und weiter wachsen.
Leider habe ich niergends eine Dokumentation dazu gefunden (zumindest nicht auf cmsmadesimple.org). Speicher ich das Ganze in einer "function.powermenu.php" ab? Funktioniert es nur in Verbindung mit dem display-Tag? Wenn ja, was muss wie angepasst werden? Wo muss das Menü-Template abgelegt werden, damit es geladen wird? Fragen über Fragen... Ich will alles wissen wink

Davon ab hoffe ich, dass diese Art der Abfrage im Menumanager in der 1.9.2 wieder verschwindet. Denn wie gesagt - bisher lief immer alles ohne Probleme.

Jan

Offline

#9 26. November 2010 16:54

piratos
Gast

Re: [GELÖST] Speedprobleme verursacht durch den Menumanager

function.powermenu.php als Dateiname ist richtig.

Den Rest nach Smarty-Regeln:

1. Ablage der Datei im Ordner /plugins oder besser lib/smarty/plugins
2. die Menü Templates in den von Smarty dafür vorgesehenen Ordner, das wäre bei cmsms  /tmp/templates (wenn nicht vorhanden -> anlegen).
3. {powermenu} ins Haupttemplate ganz oben einfügen.
4. Menütemplate mit display oder (smarty) include an der gewünschten Stelle zu Anzeige bringen.

Die Datenstruktur kann man sich mit get_template_vars zur Anzeige bringen, oder hier mal ein Ausschnitt:

Array
(
    [firsthierarchy] => 00001
    [secondhierarchy] => 
    [thirdhierarchy] => 
    [fourthhierarchy] => 
    [fifthhierarchy] => 
    [level] => 1
    [hierarchy] => 00001
    [content_id] => 15
    [owner_id] => 1
    [template_id] => 22
    [content_name] => Home
    [type] => content
    [parent_id] => -1
    [menu_text] => Home
    [content_alias] => home__
    [tabindex] => 
    [accesskey] => 1
    [titleattribute] => Home Page, shortcut key=1
    [active] => 1
    [show_in_menu] => 1
    [metadata] => 
    [url] => 
    [parent] => 
    [current] => 1
    [prevlevel] => 1
)
<br/><strong>1</strong> = Array
(
    [firsthierarchy] => 00002
    [secondhierarchy] => 
    [thirdhierarchy] => 
    [fourthhierarchy] => 
    [fifthhierarchy] => 
    [level] => 1
    [hierarchy] => 00002
    [content_id] => 34
    [owner_id] => 1
    [template_id] => 17
    [content_name] => How CMSMS Works
    [type] => content
    [parent_id] => -1
    [menu_text] => How CMSMS Works
    [content_alias] => how-cmsms-works__
    [tabindex] => 
    [accesskey] => 
    [titleattribute] => 
    [active] => 1
    [show_in_menu] => 1
    [metadata] => 
    [url] => 
    [parent] => 1
    [current] => 
    [prevlevel] => 1
)
<br/><strong>2</strong> = Array
(
    [firsthierarchy] => 00002
    [secondhierarchy] => 00001
    [thirdhierarchy] => 
    [fourthhierarchy] => 
    [fifthhierarchy] => 
    [level] => 2
    [hierarchy] => 00002.00001
    [content_id] => 36
    [owner_id] => 1
    [template_id] => 17
    [content_name] => Templates and stylesheets
    [type] => content
    [parent_id] => 34
    [menu_text] => Templates and stylesheets
    [content_alias] => templates-and-stylesheets
    [tabindex] => 
    [accesskey] => 
    [titleattribute] => 
    [active] => 1
    [show_in_menu] => 1
    [metadata] => 
    [url] => 
    [parent] => 
    [current] => 
    [prevlevel] => 1
)
<br/><strong>3</strong> = Array
(
    [firsthierarchy] => 00002
    [secondhierarchy] => 00002
    [thirdhierarchy] => 
    [fourthhierarchy] => 
    [fifthhierarchy] => 
    [level] => 2
    [hierarchy] => 00002.00002
    [content_id] => 37
    [owner_id] => 1
    [template_id] => 17
    [content_name] => Pages and navigation
    [type] => content
    [parent_id] => 34
    [menu_text] => Pages and navigation
    [content_alias] => pages-and-navigation
    [tabindex] => 
    [accesskey] => 
    [titleattribute] => 
    [active] => 1
    [show_in_menu] => 1
    [metadata] => 
    [url] => 
    [parent] => 
    [current] => 
    [prevlevel] => 2
)
<br/><strong>4</strong> = Array
(
    [firsthierarchy] => 00002
    [secondhierarchy] => 00003
    [thirdhierarchy] => 
    [fourthhierarchy] => 
    [fifthhierarchy] => 
    [level] => 2
    [hierarchy] => 00002.00003
    [content_id] => 29
    [owner_id] => 1
    [template_id] => 17
    [content_name] => Content
    [type] => content
    [parent_id] => 34
    [menu_text] => Content
    [content_alias] => content_types
    [tabindex] => 
    [accesskey] => 
    [titleattribute] => 
    [active] => 1
    [show_in_menu] => 1
    [metadata] => 
    [url] => 
    [parent] => 
    [current] => 
    [prevlevel] => 2
)

<br/><strong>5</strong> = Array
(
    [firsthierarchy] => 00002
    [secondhierarchy] => 00004
    [thirdhierarchy] => 
    [fourthhierarchy] => 
    [fifthhierarchy] => 
    [level] => 2
    [hierarchy] => 00002.00004
    [content_id] => 30
    [owner_id] => 1
    [template_id] => 17
    [content_name] => Menu Manager
    [type] => content
    [parent_id] => 34
    [menu_text] => Menu Manager
    [content_alias] => menu-manager
    [tabindex] => 
    [accesskey] => 
    [titleattribute] => 
    [active] => 1
    [show_in_menu] => 1
    [metadata] => 
    [url] => 
    [parent] => 
    [current] => 
    [prevlevel] => 2
)

Ein paar Dinge kann man in der Wiki von P.. nachlesen - ist aber alles einfache Logik.

Beitrag geändert von piratos (26. November 2010 16:55)

#10 27. November 2010 14:18

piratos
Gast

Re: [GELÖST] Speedprobleme verursacht durch den Menumanager

Als kleine Einstiegshilfe zu powermenu habe ich mal das Menü cssmenu_ulshadow.tpl nachgebildet das im Template NCleanBlue der Standardinstallation eingesetzt ist.
Sieht genauso aus und ist valide.

{* CSS classes used in this template:
#menuwrapper - The id for the <div> that the menu is wrapped in. Sets the width, background etc. for the menu.
#primary-nav - The id for the <ul>
.menuparent - The class for each <li> that has children.
.menuactive - The class for each <li> that is active or is a parent (on any level) of a child that is active. *}

<div id="menuwrapper">
<ul id="primary-nav">
{foreach from=$menu item=m name=mm}
{if $m.level < $m.prevlevel and $smarty.foreach.mm.index>1}
{repeat string='<li class="separator once" style="list-style-type: none;">&nbsp;</li></ul></li>' times=$m.prevlevel-$m.level}
{/if}
{if $m.parent and $m.current}
{assign var='classes' value=' class="menuactive menuparent parent"'}
{elseif $m.parent}
{assign var='classes' value=' class="menuparent parent"'}
{elseif $m.current}
{assign var='classes' value=' class="menuactive"'}
{else}
{assign var='classes' value=''}
{/if}
{if $m.parent}
{if $m.type == 'content'}
<li{$classes}><a{$classes} href="index.php?page={$m.content_alias}"><span>{$m.menu_text}</span></a><ul class="unli">
{elseif $m.type == 'link'}
<li{$classes}><a{$classes} href="{$m.content_alias}" target="_blank"><span>{$m.menu_text}</span></a><ul class="unli">
{elseif $m.type == 'sectionheader'}
<li{$classes}><span class="sectionheader">{$m.menu_text}</span><ul class="unli">
{/if}
{else}
{if $m.type == 'content'}
<li><a href="index.php?page={$m.content_alias}"><span>{$m.menu_text}</span></a></li>
{elseif $m.type == 'link'}
<li><a href="{$m.content_alias}" target="_blank"><span>{$m.menu_text}</span></a></li>
{elseif $m.type == 'sectionheader'}
<li ><span class="sectionheader">{$m.menu_text}</span></li>
{/if}
{/if}
{/foreach}
{repeat string='<li class="separator once" style="list-style-type: none;">&nbsp;</li></ul></li>' times=$m.level-1}
</ul>
<div class="clearb"></div>
</div>

#11 27. November 2010 14:26

piratos
Gast

Re: [GELÖST] Speedprobleme verursacht durch den Menumanager

Aus dem Plugin müssen noch folgende Zeilen entfernt werden da CMSMS diese Felder nicht hat:

$nextpage['menu_text'] = $nextpage['original_menu_text'];

$prevpage['menu_text'] = $prevpage['original_menu_text'];

Man achte darauf  das die Daten beim Einsatz für nextpage , prevpage wie auch breadcrumbs bereitrs vorliegen - man muss sie nur über entsprechende Templates anzeigen.

Der menumanager sollte deinstalliert werden, wird er es nicht und nutzt man ihn auch nur für Kleinkram sind sämtlich Vorteile wieder im A... .

#12 27. November 2010 18:47

piratos
Gast

Re: [GELÖST] Speedprobleme verursacht durch den Menumanager

Hier mal ein Vergleich - Standardinstallation 1.9.1

Menumanager wie gehabt - Erstaufruf gelöschter Cache und templates_c

0.43986 / 58 / 14845032 / 15981448

Menumanager deinstalliert, Einsatz von powermenu  - Erstaufruf gelöschter Cache und templates_c

0.220603 / 24 /  13292488 / 14148224

Und das bereits bei den Mickerseitenzahl von der Demoinstallation.

Übrigens die Uraltversion von 2005 bietet CMSMS immer noch an unter http://dev.cmsmadesimple.org/projects/pimenu obwohl Schnee von gestern.

Die hier angebotene ist ein schneller Abklatsch vom P... Projekt und wird da in den aktuellen Versionen auch nicht mehr eingesetzt, da dieser Job eine immerwährende Standardaufgabe ist, liegen die Programmteile in der index.php  - spart nochmals ein paar Millisekunden.

#13 28. November 2010 06:29

Andynium
Moderator
Ort: Dohna / SN / Deutschland
Registriert: 13. September 2010
Beiträge: 7.018
Webseite

Re: [GELÖST] Speedprobleme verursacht durch den Menumanager

piratos schrieb:

Übrigens die Uraltversion von 2005 bietet CMSMS immer noch an unter http://dev.cmsmadesimple.org/projects/pimenu obwohl Schnee von gestern.

... weshalb diese Projekt auch als "stale" gekennzeichnet wurde  smile .

Das einzigste Manko ist lediglich die fehlende Unterstützung für PrettyURLs ... ja, ich kenne deine Abneigung gegen Pretty URLs, ist aber nun mal quasi eine CMSms-Standardfunktion.

Offline

#14 28. November 2010 12:56

piratos
Gast

Re: [GELÖST] Speedprobleme verursacht durch den Menumanager

PU ist keine Sache eines Menümanagers sondern eine Sache von htaccess oder direkter Servereinstellungen und selbstverständlich sind Pretty URL's möglich.


HIer mal

http://www.hotelvanbebber.de

eine Site bei der das direkt über die Servereinstellungen gemacht wurde.

In der ebenfalls vorhandenen htaccess wird lediglich der Pagespeedteil realisiert.

PU sind allerdings aus der Sicht der Suchmaschinen nicht nur völlig überflüssig sondern laut Google selbst kann der Versuch dynamische Seiten als statische erscheinen zu lassen sich als Schuss nach hinten heraus stellen - Google rät daher direkt davon ab.

Es gibt da zwar immer noch reichlich unbelehrbare aber ich nehme mal als  Beispiel die Seiten auf der P..org  - die habe ich im Laufe der letzten Jahre diverse Male umgestellt auf alle möglichen URL Formen, zueletzt auf ?id.

Diese Umstellung hat Google in ein paar Tagen gefressen für die Form .html hatte Googel damals komplett 3 Monate benötigt bis alle Seiten zu finden waren.

Ähnliche Zeitdifferenzen  sind von anderer Seite bestätigt.

Inzwischen sind wir da so weit, das  wir alles triviale weg lassen und auf der p...org  nur noch ?id einsetzen.

Trivial wäre da z.B. die Angabe domain/index.php?page=hallo - trivial ist da index.php und page= kann man abkürzen auf ?alias oder ?id .

Man kann also die Seiten je nach Nutzungswunsch beliebig adressieren und das völlig ohne htaccess oder Servereinstellungen:


domain/?242&bereich=wiki
domain/?wiki/
domain/?242
domain/?wiki_home
domain/?wiki/home
domain/?wiki
domain/?wiki/242

Aber auch
domain/index.php?bereich=wiki&seite=home

Diese URL's landen alle auf der gleichen Seite.

Wie man das macht ist die Sache der Templategestaltung.
Die URL's sehen bis auf ? sehr statisch aus sind aber voll dynmisch.

Warum ich also etwas gegen PU habe ist wohl ausreichend begründet - unnötiger Aufwand, Zeitverluste da umgeschrieben werden muss, fragwürdiger Erfolg bei Google ja sogar gefährlich.

Und tatsächlich - es wurde eine Anzahl von gewerblichen Websites die statisch programmiert wurden - also reine HTML - auf P 1:1 umgesetzt, also exakt gleicher Inhalt aber dynamische URL - der Erfolg war durchschlagend gut - die Seiten waren auf einmal zu finden, die Besucherzahl hat sich vermehrfacht.

Den Webbetreibern blieb auch keine Wahl nur dynamisch oder garnicht, denn mit PU hätten sie bleiben können wo der Pfeffer wächst. Trotz aller Zweifel (ausgelöst von dem früherern Ersteller der Websites) waren sie dann über den wesentlich besseren Erfolg hoch erfreut - die Diskussion war damit auch schon beendet.

Die sogenannten Unbelehrbaren  sind leider zu häufig dazwischengeschaltete Berater, die es noch nicht wahr genommen haben das .html für Google und Co statisch ist und nicht dynamisch.
Statische Seiten verändern sich nie, kaum oder selten bei dynamischen setzt G. und Co. das vorraus - die werden komplett anders behandelt.

Von  mir aus kann jeder der meint er mnüsste unbedingt alles auf .html vortäuschen es auch machen, egal mit welchem System nur man sollte sich nicht dabei denken, das es Vorteile hat.

Beitrag geändert von piratos (28. November 2010 12:58)

#15 28. November 2010 13:31

dc2
kennt CMS/ms
Registriert: 26. November 2010
Beiträge: 140
Webseite

Re: [GELÖST] Speedprobleme verursacht durch den Menumanager

Dafür kann ich dir das exakte Gegenbeispiel geben: Eine Seite hatte erst URLs der Form ?page=xyz. Die komplette Indizierung + tatsächlcihe Aufnahme in die Suchergebnisse hat etwa 2 Monate in Anspruch genommen.
Dann Umstellung auf hierarchische Pretty-URLs in der Form a/b/c/xyz.htm - die Seite war nach etwa einem Monat von Google komplett übernommen worden.
Und dann kürzlich die Umstellung auf flache Adressen in der Form xyz.htm - die Indizierung hat lediglich eine Woche gedauert und nach zwei Wochen war keine URL der alten Form mehr vorhanden. Zusätzlich hat sich das Ranking stark verbessert.

Beitrag geändert von dc2 (28. November 2010 13:32)

Offline

#16 28. November 2010 13:44

piratos
Gast

Re: [GELÖST] Speedprobleme verursacht durch den Menumanager

Das sind so die Dinge die man bis zum abwinken hört - kann durchaus im Einzelfall zutreffend sein.
Ich könnte jedoch hunderte Beispiele nennen woraus ich folgere das es kein Einzelfall ist.

Und - man sollte sich doch einmal die Google Kommentare einmal durchlesen - da steckt genau die  Information dahinter - muss man sich nur mal zur Gemüte führen.

Die Leute glauben meist nur von dem was Google selbst von sich gibt, wenn es einem selbst in den Kram passt weil man daran glaubt.
Die Diskussion in diesem Teil ist vollkommen überflüssig wenn die PU Fans sich einmal selbst mit Google und Co beschäftigen und dort recherchieren , denn das hier von mir geäusserte ist Google Pur Ansicht.

#17 28. November 2010 13:58

dc2
kennt CMS/ms
Registriert: 26. November 2010
Beiträge: 140
Webseite

Re: [GELÖST] Speedprobleme verursacht durch den Menumanager

Also ich nutz Pretty-URLs vor allem auf quasi-statischen Seiten - und da funktioniert es überall sehr gut.
Man sollte schon wissen, was man macht, aber das gilt ja überall^^

Abgesehen davon sind "dynamische" URLs mit Fragezeichen einfach nur häßlich und in meinen Augen benutzerunfreundlich. Vor allem wenn sie dann auch noch Content-IDs enthalten statt eines einprägsamen Titels.

Offline

#18 28. November 2010 14:13

piratos
Gast

Re: [GELÖST] Speedprobleme verursacht durch den Menumanager

dc2 schrieb:

Abgesehen davon sind "dynamische" URLs mit Fragezeichen einfach nur häßlich und in meinen Augen benutzerunfreundlich. Vor allem wenn sie dann auch noch Content-IDs enthalten statt eines einprägsamen Titels.

Das Ammenmärchen ist bekannt - in der Praxis merkt sich kein Schwein eine konkrete Url wie z.B. diese hier:

http://www.rtl.de/cms/unterhaltung/das- … inale.html
oder
http://www.rtl.de/medien/unterhaltung/d … -2010.html
oder
http://www.focus.de/gesundheit/ratgeber … 76035.html
(bei focus beachte man die eingebaute Content_id)
oder
http://www.spiegel.de/wissenschaft/mens … 62,00.html

Man fragt sich warum nicht andere erfolgreiche Sites das so mit PU so halten:

http://android-developers.blogspot.com/ … rs+Blog%29

oder

http://www.facebook.com/home.php?sfrm=1#!/?sk=messages

Die Leute suchen entweder über G und Co oder springen direkt zu einer Website suchen dort oder hangeln sich durch oder merken sich die Seiten per Lesezeichen - kein Schwein merkt sich die Url.

Und - beim Suchen über G. und Co werden diese in den Suchergebnissen unleserlich gekürzt, da gibt es ebenfalls keine Wiedererkennung.

Was sollte man auch anderes erwarten bei  dem zig Millionen von Websites (Domains) und  zig Millionen Subdomains oder in Unterverzeichnisse gehaltene komplette Web's.
Da wird man von der Masse erschlagen - wer glaubt man merkt sich Url's der kann auch gleich an die Realität von Grimms Märchen glauben. wink

PS.  Wie man hier sieht bzw. nicht sieht werden sogar hier die meterlangen Pretty URL's gekürzt gezeigt.

Beitrag geändert von piratos (28. November 2010 14:15)

#19 28. November 2010 14:23

dc2
kennt CMS/ms
Registriert: 26. November 2010
Beiträge: 140
Webseite

Re: [GELÖST] Speedprobleme verursacht durch den Menumanager

Das sind keine Pretty-URLs bzw. keine schönen URLs wie ich sie meine. Meterlange Adressen sind genau so ein Unding wie reine ID-URLs.

Und ich hab auch nichts von merken gesagt - einprägsam bedeutet auch, dass auf den ersten Blick erkennbar ist, was sich dahinter verbirgt. Damit meine ich kurze und aussagekräftige Adressen. Hierarchische URLs können diesen Aspekt nur bei sehr flacher Struktur ausreichend erfüllen.
Ansonsten sollte man bei großen Seiten lieber ID + Titel etwa in der Art http://example.com/256/xyz.htm nutzen, da erkennt man immer noch schnell, was die Seite beinhaltet und ist trotzdem hinreichend flexibel, indem man nicht für jede Seite einen eindeutigen Titel benötigt.

Der Spiegel kommt dem noch am nächsten aber die Adresse ist mir persönlich immer noch nicht aussagekräftig genug. Statt mehrere IDs die beim SPiegel vermutlich eine Hierarchie abbilden, sollten sie lieber ein einzige Hexadezimale ID (oder ein ähnliches System, etwa wie bei Youtube) nutzen, um eine Seite eindeutig zu identifizieren.

Beitrag geändert von dc2 (28. November 2010 14:23)

Offline

#20 28. November 2010 14:38

piratos
Gast

Re: [GELÖST] Speedprobleme verursacht durch den Menumanager

Nun - wie du bereits bemerkt hast sollte jeder wissen was er macht, welche Nachteile man sich einkauft und ob Vorteile wirklich Vorteile sind oder nicht.

Ich halte mich da lieber an die von den Suchmaschinen ausgegebenen Ratschläge und Fakten wie auch die einfache Erkenntnis das sich in der Praxis nie jemand überhaupt eine Url merkt - egal wie die aussieht, das reicht bei den Besuchern gerade mal für den Domainnamen.
Für mich ist es ein Unsinn sich da Gedanken zu machen und in der Praxis macht ein Schreiberling im gewerblichen Bereich sich keine Gedanken wie ein Alias oder sonst etwas ausszusehen hat - der haut seine Inhalte rein und gut ist. Ein CMS lebt ja gerade davon das man Inhalte schnell aktualisiert und dynamisch ändert - das kann man ja vorzüglich bei den gut besuchten Websites erkennen. Und da verschwinden Inhalte auch wieder schnell, weil sie überholt sind.

#21 28. November 2010 14:57

NaN
Moderator
Ort: Halle (Saale)
Registriert: 09. November 2010
Beiträge: 4.437

Re: [GELÖST] Speedprobleme verursacht durch den Menumanager

Interessante Aussagen.
Ich persönlich mag zwar auch "statische" bzw. aussagekräftige URLs lieber, aber wie dc2 schon sagte, macht das nur dann Sinn, wenn die Hierarchie entsprechend flach ist.
Wenn es allerdings um die Performance geht (und um nichts anderes geht es hier doch eigentlich, oder?), muss man eben Kompromisse machen. Da würde ich lieber auf PrettyURLs verzichten als mit Suchergebnis-Ranking zu pokern.

Was Google & Co. davon halten, ist für mich beim Thema Performance erstmal zweitrangig. Außerdem führt doch schlechte Performance mittlerweile ebenfalls zu schlechterem Ranking. Dass Google tatsächlich die URLs mit in die Suchkriterien aufnimmt, führt leider auch dazu, dass Suchergebnisse ganz weit oben stehen, nur weil sie irgendwelche SEO Praktiken beinahe zwanghaft umgesetzt haben, aber mit der eigentlichen Suchanfrage außer einem einzigen Wort in der URL nichts zu tun haben. Das regt mich auf! Im Endeffekt kann das, wie Piratos schon sagte, wieder nach hinten losgehen. Denn Google bewertet auch, wie lange der Besucher nach der Wahl eines Suchergebnisses auf der Seite bleibt. Sollte er sofort wieder zurückkehren und weitere Suchergebnisse durchstöbern, wirkt sich das wieder negativ auf das Ranking aus. Da können noch so tolle URLs verwenden werden.

Wenn ich auf Google-Ranking angewiesen bin und PrettyURLs nachweislich einen Vorteil bieten sollten, dann muss ich in eine performantere Umgebung investieren. Man kann nicht ernsthaft glauben, eine Seite mit mehreren hundert Unterseiten bei einem billig Massenhoster betreiben zu können und dennoch optimale Performance inklusive PrettyURLs zu haben. Das ist naiv.

Letztendlich liegt aber in diesem speziellen Beispiel hier das Problem eher beim PHP Script.
Weniger bei der URL Gestaltung.

Soweit ich weiß, speichert der MenuManager das Menü nur dann im Zwischenspeicher, wenn sowohl Seite als auch Menü-Template zwischenspeicherbar sind. Habe das bisher noch nicht verwenden können. Kann da also leider keine Erfahrungswerte beisteuern.


Module: GBFilePicker, AdvancedContent
Sicherheit: Beispiel .htaccess-Datei
CMSms 1.12 unter PHP 7:
cmsms-1.12.3.zip (inoffiziell - komplett inkl. Installer)
CMSms 1.12 unter PHP 8:
cmsms-1.12.4.zip (inoffiziell - komplett inkl. Installer)

Offline

#22 28. November 2010 15:25

piratos
Gast

Re: [GELÖST] Speedprobleme verursacht durch den Menumanager

NaN schrieb:

Wenn es allerdings um die Performance geht (und um nichts anderes geht es hier doch eigentlich, oder?), muss man eben Kompromisse machen. Da würde ich lieber auf PrettyURLs verzichten als mit Suchergebnis-Ranking zu pokern.

Das war die Ausgangslage - das Stichwort pretty Url führte zur kleinen Abweichung vom Faden passt aber dazu, weil man im Zusammenhang auch diese Seite durchaus beleuchten kann und nach Bedarf auch sollte.

Es ist richtig das Pagespeed heute der Punkt ist der etwas bringt.
Tatsache ist das alle von einer Partneragentur erstellten gewerblichen Web's bei einem Pagespeed von 97 bis 100 hervorragende Erfolge zeigten,zum einen:

weil sie gut gefunden werden
weil es den  Besuchern nicht in den Fingern juckt zu zappen
weil die Mitbewerber das alles verschlafen haben und Lahmarschseiten anbieten.

Man muss aber auch wissen, das Pagespeed die Zeit bewertet, die für Ablieferung und die komplette Darstellung im Besucherbrowser aufgewendet wird und die setzen sich aus Generierungszeit (wann wird geliefert) , Transferzeiten,Request's und den Renderzeiten selbst zusammen.
Ein wesentlicher Teil liegt damit ausserhalb eines CMS und voll in der Verantwortung des Webmaster's und diese Zeiten sind normal sehr viel höher als die Performance eines CMS gemessen in Generierungszeit.

Schlecht also - wie in dem Fall hier - wenn es genau umgekehrt ist.

Was Caching betrifft muss man sehen das das gelöscht wird wenn sich Seiteninhalte ändern und das kann bei einem dynamischen System erwartungsgemäß häufig geschehen.

Das bedeutet - man hat wieder den Erstzustand und dann das Problem mit der bei einem gefüllten Web gewaltigen Anzahl von DB Abfragen und einen abnormen Speicherverbrauch beim Menumanager - das kann man mit powermenu beheben, muss aber seine Templates anpassen.

Beitrag geändert von piratos (28. November 2010 15:45)

#23 28. November 2010 15:44

piratos
Gast

Re: [GELÖST] Speedprobleme verursacht durch den Menumanager

Was die konkrete Website betrifft kann man hier zwei dicke Dinger erkennen:

http://www.webpagetest.org/result/10112 … breakdown/

1. cms zu langsam bis das erste Byte abgeliefert wird (MM)
2. Google ads stellen ebenfalls ein Problem dar - dauert zu lange und da javascriptteile geladen werden bis sie da und verarbeitet sind, heisst es warten. Empfehlung Ads nur unten im Footer und dann wirklich ganz am Ende.

2a. jquery würde ich unter diesen Umständen vom eigenen Webserver laden.

#24 28. November 2010 16:42

jeff1980
Server-Pate
Ort: Dortmund
Registriert: 26. November 2010
Beiträge: 630

Re: [GELÖST] Speedprobleme verursacht durch den Menumanager

Hi,
um noch mal auf die Hauptproblemematik zurück zu kommen - den Menumanger.
Ich habe ihn spaßeshalber auf der Entwicklungsseite mal komplett deinstalliert. Die Seite benötigt nun nur noch 39 SQL-Queries aber immer noch 20 Sekunden. Die Zeit geht immer noch an der gleichen Stelle verloren. Das finde ich extrem merkwürdig.
Zudem habe ich heute mal alles aus dem Template rausgeschmissen (GCB, if-Abfragen, Tags/UDTs etc). Es war wirklich nur noch ein HTML-Gerippe - und selbst da ist die Ladezeit gleich geblieben.
Kann es nicht sein, dass der Haken woanders sitzt? Ok, der Menumanager scheint nicht auf dem Stand der Technik zu sein und die genannten Performanceunterschiede sprechen ja für sich.
Hab den Menumanger jetzt immer noch deinstalliert. Wer also noch mal schauen möchte:
www.dev.festtagsgedichte.de

Was die generelle Geschwindigkeit angeht habe ich die letzten Monate schon echt gearbeitet (Cyberman hats ja im anderen Forum mitbekommen). Die Seite ist von einem Pagespeed von knapp über 80 auf mittlerweile fast Mitte 90 geklettert (dank der tollen Mithilfe aus dem Forum).
Die Googlewerbung ist langsam, das stimmt. Aber sie bezahlt uns zumindest den Webserver - ist leider so. Da kann ich an den Platzierungen nichts machen.
Ich habe im Netz auch schon geschaut, da es ja nicht sein kann, dass Google schnelle Webseiten propagiert (ja sogar "fordert") und dann selbst so hinterher hängt. Es gibt da Ansätze, die Werbung ganz am Ende des Codes zu lagern und dann per JS an die entsprechende Stelle zu setzen. Bisher hatte ich noch keine Zeit, es mir genauer anzuschauen bzw. auszuprobieren.
jQuery vom eigenen Server war bei uns leider kontraproduktiv. So hatte ich es lange Zeit, aber beim Pagespeed-PlugIn wurde es immer bemängelt und es geht so auch ein wenig schneller.

Aber in diesem Falle hängt das Hauptproblem ja offensichtlich ganz woanders - und vielleicht ja sogar nicht mal im Menumanager. Aber dazu kenne ich mich einfach zu wenig mit dem Core vom CMSms aus.

Ich möchte Piratos Lösung auch auf jeden Fall ausprobieren. Leider hänge ich schon voll im Vorweihnachtsstress, sodass ich nicht lange genug Zeit hatte, mir das ganze mal komplett anzuschauen. Hoffe, dass ich die Woche jetzt dazu komme.

Davon mal ab bin ich hier (und auch im "großen" Forum) jedem dankbar, der seine Hilfe und Tipps anbringt.

Jan

Offline

#25 28. November 2010 18:16

piratos
Gast

Re: [GELÖST] Speedprobleme verursacht durch den Menumanager

Deine dev ist teils nicht identisch mit der root-Installation und die Rootinstallation ist 10 x schneller als deine dev - stellt sich die Frage ob die dev korrekt ist, was ich bezweifel, da ind er dev Versionen auch Teile aus der Root und aus der dev azfgerufen werden.

Also reden wir mal von der Root:

Also wer Pagespeed nutzt kann  eigentlich eine Menge erkennen, man sollte darauf reagieren:

1. 404 - http://festtagsgedichte.de/crossdomain.xml

2.Jede Menge Inlinestyles - Browser fangen erst dann an zu rendern, wenn die Styles klar sind, das wäre es, wenn man diese CSS in die CSS Datei packen würde.

3.html, js und images sind nicht gecacht bzw. nicht durchgängig gecacht!!

4. Einige Images haben ein Verfallsdatum 2010/4/15  - sehr schön, das Datum hatten wir mal.

Diese #
# http://code.jquery.com/jquery-latest.min.js
# http://www.festtagsgedichte.de/js/jquer … 0.1.min.js

würde ich zu einer Datei zusammenfassen und ganz unten am Ende des Body Tags legen. Legt man sie nach oben holt sich ein Browser erst das Javascript und arbeitet es eventuell ab und macht ansonsten nix.

Also erst einmal sauber machen und dann heran tasten.

Die dev - Installation halte ich für kaputt.