Du bist nicht angemeldet. Der Zugriff auf einige Boards wurde daher deaktiviert.
#26 29. November 2010 14:20
- jeff1980
- Server-Pate
- Ort: Dortmund
- Registriert: 26. November 2010
- Beiträge: 630
Re: [GELÖST] Speedprobleme verursacht durch den Menumanager
Hi nochmal,
die dev schaue ich mir noch mal an. Das Problem hatte ich aber auch bei der Hauptinstallation (habe sie dann ja letztendlich wieder zurück auf die 1.8.2 gesetzt).
Ich habe mir aber jetzt noch mal PageSpeed zur Brust genommen und einige Dinge geändert/angepasst:
zu 1: Diesen Fehler kann ich nicht nachvollziehen - hattest Du ihn auf der Startseite oder einer Unterseite? Der Aufruf taucht bei mir nicht auf...
zu 2: Dies sind meist Quellcode-Passagen die aus Modulen/PlugIns kommen, auf deren Quellcode ich zwar zugreifen könnte, die Updatefähigkeit dann aber hinfällig wäre (z.B. das Weiterempfehlen-PlugIn). Aber behalte es auf jeden Fall im Hinterkopf und werde es angreifen- ist denke ich nicht die größte Baustelle.
zu 3: Ich hab die htaccess-Dateien nach bestem Wissen und Gewissen (nach ewigen Recherchen und Experimenten) erstellt. Da ich mich erst seit ca. 2 Monaten damit beschäftige (eher nebenbei) bin ich da für jeden Hinweis dankbar. Die aktuelle htaccess im Hauptordner sieht so aus:
# Attempt to override some php settings, these settings may be helpful on some hosts if your
# default configuration does not meet CMS's minimum requirements, and your host
# has given your account appropriate permissions
#php_value upload_max_filesize "10M"
#php_value session_save_path "tmp/cache"
#php_flag magic_quotes_gpc Off
#php_flag register_globals Off
#php_flag session.use_trans_sid Off
# (this is important, so uncomment if your host permit)
Options -Indexes
ServerSignature Off
#
Options +FollowSymLinks
#
<IfModule mod_rewrite.c>
RewriteEngine on
#
#Sub-dir e.g: /cmsms
RewriteBase /
#
# 301 Redirect all requests that don't contain a dot or trailing slash to
# include a trailing slash
# but ignore POST requests.
#RewriteCond %{REQUEST_URI} !/$
#RewriteCond %{REQUEST_URI} !\.
#RewriteCond %{REQUEST_METHOD} !POST$
#RewriteRule ^(.*) %{REQUEST_URI}/ [R=301,L]
# Rewrites urls in the form of /parent/child/
# but only rewrites if the requested URL is not a file or directory
#
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)$ index.php?page=$1 [QSA]
</IfModule>
#Compression
<IfModule mod_deflate.c>
SetOutputFilter DEFLATE
# Don't compress
SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-gzip dont-vary
SetEnvIfNoCase Request_URI \.(?:exe|t?gz|zip|bz2|sit|rar)$ no-gzip dont-vary
</IfModule>
# Expire headers 5184000 Sekunden = 2 Monate
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/x-icon "access plus 1 year"
ExpiresByType image/gif "access plus 2 weeks"
ExpiresByType image/jpg "access plus 2 weeks"
ExpiresByType image/png "access plus 2 weeks"
ExpiresByType text/css "access plus 2 weeks"
ExpiresByType text/javascript "access plus 2 weeks"
ExpiresByType application/javascript "access plus 2 weeks"
ExpiresByType application/x-javascript "access plus 2 weeks"
</IfModule>
# BEGIN Cache-Control Headers
<ifmodule mod_headers.c>
<filesmatch "\\.(ico|jpe?g|png|gif|swf|htm)$">
Header set Cache-Control "max-age=1209600, public"
</filesmatch>
<filesmatch "\\.(css)$">
Header set Cache-Control "max-age=1209600, private"
</filesmatch>
<filesmatch "\\.(js)$">
Header set Cache-Control "max-age=1209600, private"
</filesmatch>
</ifmodule>
# Turn ETags Off
<ifmodule mod_headers.c>
Header unset ETag
</ifmodule>
FileETag None
Im images-Ordner (unter img.festtagsgedichte.de) liegt diese Datei:
#Compression
<IfModule mod_deflate.c>
SetOutputFilter DEFLATE
# Don't compress
SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-gzip dont-vary
SetEnvIfNoCase Request_URI \.(?:exe|t?gz|zip|bz2|sit|rar)$ no-gzip dont-vary
#Dealing with proxy servers
<IfModule mod_headers.c>
Header append Vary User-Agent
</IfModule>
</IfModule>
# Expire headers 5184000 Sekunden = 2 Monate
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/x-icon "access plus 1 year"
ExpiresByType image/gif "access plus 2 weeks"
ExpiresByType image/jpg "access plus 2 weeks"
ExpiresByType image/png "access plus 2 weeks"
ExpiresByType text/css "access plus 2 weeks"
ExpiresByType text/javascript "access plus 2 weeks"
ExpiresByType application/javascript "access plus 2 weeks"
ExpiresByType application/x-javascript "access plus 2 weeks"
</IfModule>
# BEGIN Cache-Control Headers
<ifmodule mod_headers.c>
<filesmatch "\\.(ico|jpe?g|png|gif|swf)$">
Header set Cache-Control "max-age=1209600, public"
</filesmatch>
<filesmatch "\\.(css)$">
Header set Cache-Control "max-age=1209600, private"
</filesmatch>
<filesmatch "\\.(js)$">
Header set Cache-Control "max-age=1209600, private"
</filesmatch>
</ifmodule>
# Turn ETags Off
<ifmodule mod_headers.c>
Header unset ETag
</ifmodule>
FileETag None
Zu diesem Thema habe ich so viele verschiedene Ansätze gefunden (u.a. auch Punkt 4 - falsches Datum - ist nun korrigiert). Das ist jetzt das, was meiner Meinung nach (laut PageSpeed) gut funktioniert.
zu 4: Erledigt - allerdings meckert PageSpeed nun an, dass ich CSS-Sprites erstellen soll. Das habe ich getan. Aber es ist ja nun nicht wirklich alles spritebar.
Sobald ich die js-Dateien ans Ende Packe, wird die entsprechende Aktion (Slider auf der ersten Seite) nicht mehr ausgeführt. Die Slider befindet sich auch nur auf der Startseite. Die jquery benötige ich u.a. noch für die Mehrsprachigkeit (z.B. http://www.festtagsgedichte.de/festtage … -gute.htm) - lege ich sie ans Ende funktioniert die Tabs nicht mehr.
Wo ich im Moment große Probleme mit habe ist einmal die Sprites-Geschichte (0/100 Punkte) - obwohl ich da nicht weiß, was ich noch zusammenfassen soll. Selbst SpriteMe (von Google empfohlen) findet nichts mehr.
Der zweite Punkt ist "Serve static content from a cookieless domain" (0/100 Punkte). Hier habe ich nur Möglichkeiten gefunden, das über Apache selbst zu machen. Da habe ich aber natürlich keinen Zugang zu. Ich habe ja schon extra die SubDomain erstellt für die meisten Bilder.
Bei einem anderen Projekt (läuft auf dem gleichen Server) habe ich 50/100 Punkte - obwohl ich nichts anders gemacht habe.
Beide Punkte kamen erst jetzt so extrem dazu nachdem ich das Verfallsdatum geändert habe. Vorher war es nicht perfekt aber besser.
So langsam steige ich da nicht mehr durch, da die Anleitungen/Beiträge im Netz meist Dinge voraussetzen an denen ich nichts ändern kann bzw. nicht weiß, wie ich es ändern soll.
Danke für Eure Geduld...
Jan
Offline
#27 29. November 2010 14:42
- piratos
- Gast
Re: [GELÖST] Speedprobleme verursacht durch den Menumanager
Normal reicht die htaccess in der Root die Cachdinge in den Unterverzeichnissen zu wiederholen ist nicht korrekt.
Meine Standard htaccess in action sieht so aus:
RewriteEngine on
ServerSignature Off
SetEnv TZ Europe/Berlin
AddDefaultCharset utf-8
DirectoryIndex index.php index.html
php_value arg_separator.output "&"
RewriteCond %{HTTP_HOST} ^www.powercms.org$
RewriteRule ^(.*)$ http://powercms.org/$1 [R=permanent,L]
RewriteRule sitemap.xml sitemaps.php
RewriteBase /
FileETag None
AddType "text/css;charset=UTF-8" .cssgz
AddEncoding gzip .cssgz
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html text/plain text/xml application/xml application/xhtml+xml text/javascript text/css application/x-javascript image/gif text/x-js application/javascript image/x-icon
</IfModule>
<IfModule mod_headers.c>
Header set Vary *
</IfModule>
<FilesMatch "^\." >
deny from all
</FilesMatch>
<FilesMatch ".*\.(html|php|css|js|xml|txt)$">
SetOutputFilter DEFLATE
</FilesMatch>
AddType video/x-flv .flv
AddType application/x-shockwave-flash .swf
AddType image/x-icon .ico
# Expire images header
ExpiresActive On
ExpiresDefault "access plus 2 days"
ExpiresByType image/gif "access plus 1 years 1 days"
ExpiresByType image/png "access plus 1 years 1 days"
ExpiresByType image/jpg "access plus 1 years 1 days"
ExpiresByType image/jpeg "access plus 1 years 1 days"
ExpiresByType image/jpeg;charset=ISO-8859-1 "access plus 1 years 1 days"
ExpiresByType image/x-icon "access plus 2 years 1 days"
ExpiresByType text/css "access plus 1 years 1 days"
ExpiresByType text/javascript "access plus 1 years 1 days"
ExpiresByType application/x-javascript "access plus 1 years 1 days"
ExpiresByType text/x-js "access plus 1 years 1 days"
ExpiresByType application/javascript "access plus 1 years 1 days"
<ifModule mod_headers.c>
<filesMatch "\\.(ico|pdf|flv|jpg|jpeg|png|gif|swf)$">
Header set Cache-Control "max-age=31622401, public"
</filesMatch>
<filesMatch "\\.(js)$">
Header set Cache-Control "max-age=31622401, private"
</filesMatch>
<filesMatch "\\.(css)$">
Header set Cache-Control "max-age=31622401, private"
</filesMatch>
<filesMatch "\\.(cssgz)$">
Header set Cache-Control "max-age=31622401, private"
</filesMatch>
<filesMatch "\\.(jsgz)$">
Header set Cache-Control "max-age=31622401, private"
</filesMatch>
<filesMatch "\\.(xml|txt)$">
Header set Cache-Control "max-age=216000, public, must-revalidate"
</filesMatch>
</ifModule>
Aber fangen wir doch mal langsam an:
<script type="text/javascript" src="player/swfobject.js"></script>
<link rel="alternate" type="application/rss+xml" title="Festtagsgedichte RSS-Feed" href="http://feeds.feedburner.com/festtagsgedichte" />
<script src="http://code.jquery.com/jquery-latest.min.js" type="text/javascript"></script>
<script src="js/jquery.bxslider2.0.1.min.js" type="text/javascript"></script>
<!--[if lt IE 7]>
<script type="text/javascript" src="http://www.festtagsgedichte.de/js/jquery/jquery.js"></script>
<script type="text/javascript" src="http://www.festtagsgedichte.de/js/jquery/jquery.dropdown.js"></script>
<link rel="stylesheet" type="text/css" href="http://www.festtagsgedichte.de/stylesheet.php?cssid=55" />
<![endif]-->
Wenn ich jetzt mit dem IE7 unterwegs bin habe ich vier Javascripte am Halse also 4 Request's.
Dann lade ich zudem jquery gleich 2 mal, einmal von google und einmal von dir, was natürlich nicht richtig sein kann.
Hat man ein Web soweit fertig , dann kopiert man alle Javascripte genau in der Reihenfolge in eine einzige Datei und verhindert hier gleich 3 Request's, das kann bis zu einer halben Sekunde bringen und das wäre doch schon etwas.
Jquery über Google zu laden kann man machen, dann ist aber nix mit Caching, deswegen weg damit und von lokal. Und - wenn's bei Google mal klemmt, klemmt es dann bei einem selbst nicht mehr.
Also eine sammel.js herstellen , die Browserweiche für js würde ich entfernen und alles über die sammel.js laden.
Also erst einmal das mit der sammel.js machen, pagespeed ausführen, sich das Gemecker von wegen zu großer JS Datei ansehen und die dort vorgschlagene komprimierte Datei verwenden.
Und dann mal schauen was sich getan hat.
Beitrag geändert von piratos (29. November 2010 14:45)
#28 29. November 2010 14:54
- piratos
- Gast
Re: [GELÖST] Speedprobleme verursacht durch den Menumanager
So und nun zu den nöchsten Dingen.
Es scheint Problemchen zu geben bei der Google Ad's Einbindung:
Unable to post message to http://googleads.g.doubleclick.net. Recipient has origin http://www.festtagsgedichte.de.
Pwik scheint eine ziemliche Bremse zu sein. Auf Pwik würde ich verzichten.
Knackpunkt ist immer noch die cms selbst, die benötigt 1,4 Sekunden um den ersten Furz abzulassen.
Solche Dinge in die CSS zu setzen würde ich tunlichst unterlassen:
body{background:url(http://img.festtagsgedichte.de/body_bg.jpg)
das bedeutet - es wird ein http Request ausgeführt - und das hast du einige male drin.
Beitrag geändert von piratos (29. November 2010 14:58)
#29 29. November 2010 15:40
- Andynium
- Moderator
- Ort: Dohna / SN / Deutschland
- Registriert: 13. September 2010
- Beiträge: 7.018
- Webseite
Re: [GELÖST] Speedprobleme verursacht durch den Menumanager
Solche Dinge in die CSS zu setzen würde ich tunlichst unterlassen:
body{background:url(http://img.festtagsgedichte.de/body_bg.jpg)
das bedeutet - es wird ein http Request ausgeführt - und das hast du einige male drin.
Wobei dann natürlich der Vorteil der "Cookieless domain" verloren geht ...
Offline
#30 29. November 2010 15:53
- piratos
- Gast
Re: [GELÖST] Speedprobleme verursacht durch den Menumanager
Wobei dann natürlich der Vorteil der "Cookieless domain" verloren geht ...
Das ist ganz einfach zu lösen, man darf einfach keine session starten, wenn man keine im Frontend benötigt.
Es soll ja Projekte geben die sich darüber Gedanken gemacht haben und das über die config
$config['frontendsession']=false;
und an der entsprechenden Stelle gelöst haben.
Zeitlich sind die Cookies wertloser als die Request's.
#31 29. November 2010 18:13
- jeff1980
- Server-Pate
- Ort: Dortmund
- Registriert: 26. November 2010
- Beiträge: 630
Re: [GELÖST] Speedprobleme verursacht durch den Menumanager
Wow - die htaccess hat einiges gebracht. Plötzlich meckert er nicht mehr die "fehlenden" Sprites an und auch Cookieless Domain ist auf ca. 75/100 gestiegen.
Die htaccess im Images-Ordner hatte ich für die SubDomain gesetzt - aber mit Deinen htaccess-Einstellungen ist sie wohl wirklich hinfällig. Vorher gab es einen Unterschied zwischen mit oder ohne htaccess im Unterordner.
Die Sammel-js-Datei habe ich auch umgesetzt (hat auch einen Punkt gebracht).
Den http-Request aus der CSS-Datei habe ich in Kauf genommen, da ich über die SubDomain parallel mehr laden kann - sonst kam es da immer zu einer Warnung.
Piwik ist noch die schnellste (freie) Statistik die ich finden konnte, die auch die Ansprüche der Betreiberin erfüllt. Und dieses Script liegt ja auch ganz am Ende.
Google Analytics habe ich auch ausprobiert - das fand ich sehr langsam und die Betreiberin sehr unübersichtlich...
Insgesamt steht die Seite jetzt bei 95/100 (Startseite, nur Content). Und ich habe das Gefühl, dass es jetzt besser (sauberer) konfiguriert ist als zuvor, da ich mir ja alles zusammen gesucht habe.
Zudem scheint das Caching (so weit ich es überblicken kann) jetzt auch wirklich zu funktionieren. Zumindest habe ich statt über 40 Anfragen nur noch um die 15.
Ich werde in den nächsten Tagen mal eine neue dev-Installation mit diesen Einstellungen aufsetzen und auch versuchen, alle Requests über die dev-Domain laufen zu lassen. Und dann traue ich mich noch mal an das Update.
Beitrag geändert von jeff1980 (29. November 2010 18:15)
Offline
#32 29. November 2010 18:52
- piratos
- Gast
Re: [GELÖST] Speedprobleme verursacht durch den Menumanager
Wow - die htaccess hat einiges gebracht. Plötzlich meckert er nicht mehr die "fehlenden" Sprites an und auch Cookieless Domain ist auf ca. 75/100 gestiegen.
Also deine Startseite liegt jetzt bei Pagespeed 91.
Wenn du die htaccess auch mal auf der img. subdomain einsetzen würdest könnte es etwas bringen und es sind noch einige wenige Images die mistig komprimiert sind.
Ich schätze du könntes da ohne weiteres auf Pagespeed 95..97 kommen.
Ändert dennoch nichts an den Umstand das die CMS der Quotenkiller ist - da wird Zeit verballert.
In dem Zusammenhang - ein Web kann auch bei hohem Pagespeed ein Lahmarsch sein.
Das CMS benötigt 1,4 .. 2 Sekunden bis der erste Fliegenfurz geliefert wird.
Im übrigen kann ich für die ganz schnelle Kontrolle (und hervorragend) den Google Chrome empfehlen, der wird auch nicht durch Plugins wie Firebug oder Pagespeed ausgebremst.
Mit dem liegt deine Startseite bei 2,6 Sekunden, davon 1,96 bis es pups macht.
Es gibt was Javascripte betrifft noch einen ganz wirkungsvollen Trick - diese per Ajax einbinden, dann werden mehrere parallel geladen - aber das muss man testen ob es wirklich funzt.
Beitrag geändert von piratos (29. November 2010 18:53)
#33 30. November 2010 15:34
- NaN
- Moderator
- Ort: Halle (Saale)
- Registriert: 09. November 2010
- Beiträge: 4.437
Re: [GELÖST] Speedprobleme verursacht durch den Menumanager
Hier mal eine leicht modifizierte Version von PowerMenu für CMSms 1.9+
(sind wirklich nur wenige Zeilen)
<?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;
$gCms = cmsms(); // mod by NaN: compatibility fix for CMSms 1.9+ (30.11.2010)
$memcache=false;
$sprache='pcms';
#$config = $gCms->config;
$config = $gCms->GetConfig(); // mod by NaN: compatibility fix for CMSms 1.9+ (30.11.2010)
$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;
$page_id = cms_utils::get_current_pageid(); // mod by NaN: compatibility fix for CMSms 1.9+ (30.11.2010)
$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'];
if(!$content_obj = cms_utils::get_current_content()) // mod by NaN: compatibility fix for CMSms 1.11+ (29.09.2013)
return;
$page_hierarchy = $content_obj->Hierarchy();
// mod by NaN: compatibility fix for CMSms 1.9+ (30.11.2010)
$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']; // mod by NaN: compatibility fix for CMSms 1.9+ (30.11.2010)
}
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']; // mod by NaN: compatibility fix for CMSms 1.9+ (30.11.2010)
}
}
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']);
}
?>
Ich habe das Ganze allerdings noch nicht erfolgreich testen können, da es leider keine Dokumentation dazu gibt. Wo müssen denn die Menü-Templates gespeichert werden? Ich habe schon sämtliche Verzeichnisse mit Templates übersäht, jedoch ohne Erfolg. Weder in ./cache, ./plugins/cache, irgendeinem ./tmp-Verzeichnis noch als normales Seiten-Template oder sonst irgendwo hat das irgendwas gebracht.
Auch in Piratos Wiki steht nichts dazu.
Zu wissen, dass allein Piratos alles schneller kann, hilft uns leider nicht weiter
Erleuchte mich mal bitte jemand.
Beitrag geändert von NaN (29. September 2013 11:28)
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
#34 30. November 2010 16:04
- Andynium
- Moderator
- Ort: Dohna / SN / Deutschland
- Registriert: 13. September 2010
- Beiträge: 7.018
- Webseite
Re: [GELÖST] Speedprobleme verursacht durch den Menumanager
Wo müssen denn die Menü-Templates gespeichert werden? Ich habe schon sämtliche Verzeichnisse mit Templates übersäht, jedoch ohne Erfolg.
Normalerweise sollte dies mit /tmp/templates funktionieren ... aus unerfindlichen Gründen ist dieses Verzeichnis aus einer der letzten CMSms-Versionen entfernt worden, obwohl es nach meinem Smarty-Verständnis DAS Verzeichnis für dateibasierte Templates ist - muss also neu angelegt werden.
die Dateien function.powermenu.php und function.display.php nach /lib/smarty/plugins kopieren
{powermenu} als erstes im Seiten-Template einfügen
für das Menü {display template='cssmenu_ulshadow.tpl'} einfügen
Offline
#35 30. November 2010 16:16
- NaN
- Moderator
- Ort: Halle (Saale)
- Registriert: 09. November 2010
- Beiträge: 4.437
Re: [GELÖST] Speedprobleme verursacht durch den Menumanager
Alles klar, danke.
Von Dateitemplates scheint sich CMSms gänzlich verabschiedet zu haben.
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
#36 30. November 2010 16:28
- Andynium
- Moderator
- Ort: Dohna / SN / Deutschland
- Registriert: 13. September 2010
- Beiträge: 7.018
- Webseite
Re: [GELÖST] Speedprobleme verursacht durch den Menumanager
Damit verschenkt man aber eine gehörige Menge Potential - insbesondere, solange der Performance-Fresser ADOdb eingesetzt wird.
Offline
#37 30. November 2010 17:09
- piratos
- Gast
Re: [GELÖST] Speedprobleme verursacht durch den Menumanager
Damit verschenkt man aber eine gehörige Menge Potential - insbesondere, solange der Performance-Fresser ADOdb eingesetzt wird.
Das ist aber auch mit anderen DB Trreibern so , sogar mit PHP Direktantrieb ohne Klasse.
Ich habe da lange hin und her gefummelt um heraus zu bekommen welche Vorteile z.B. der Einsatz von Mysql für den Smarty (3) Cache wären - das läuft auch technisch sauber.
Aber - da habe ich bemerkt das Templates in der DB eigentlich eine Scheiss - Idee ist, da Smarty dafür nicht gemacht wurde.
Tatsächlich würde PCMS z.B. mit Smarty 3 Mysql Cache ca. 4,5 x langasmer werden bzw. mehr G Zeit benötigen.
Mit Smarty 2 habe ich mal den Versuch unternommen eine große Anzahl von kleinen Templates in eine eigene Tabelle zu schmeissen statt als File abzulegen - der Erfolg damals im Schnitt 6 x langsamer.
Also blieb es bei dem Haupttemplate in der DB und mehr kommt da garantiert nicht in die Badewanne.
Beitrag geändert von piratos (30. November 2010 17:14)
#38 30. November 2010 18:52
- Andynium
- Moderator
- Ort: Dohna / SN / Deutschland
- Registriert: 13. September 2010
- Beiträge: 7.018
- Webseite
Re: [GELÖST] Speedprobleme verursacht durch den Menumanager
aus unerfindlichen Gründen ist dieses Verzeichnis aus einer der letzten CMSms-Versionen entfernt worden, obwohl es nach meinem Smarty-Verständnis DAS Verzeichnis für dateibasierte Templates ist
Ich seh das noch von einer ganz anderen Seite - es ist wieder ein Punkt, an dem vom offiziellen Smarty-Standard abgewichen wird
Offline
#39 30. November 2010 19:31
- piratos
- Gast
Re: [GELÖST] Speedprobleme verursacht durch den Menumanager
Das ist doch völlig egal, nur ich finde tmp ein wenig unglücklich als Container, da sucht kein Schwein nach templates aber das war wohl die Absicht.
#40 25. Mai 2011 21:10
- X-TREM
- probiert CMS/ms aus
- Registriert: 17. Dezember 2010
- Beiträge: 95
- Webseite
Re: [GELÖST] Speedprobleme verursacht durch den Menumanager
Wie ändere ich denn mein Menü? Verstehe ich noch nicht.
Ich habe zwei Menüs für mein Template:
horizontal:
{* CSS classes used in this template:
.active - The active page in the horizontal menu (first level).
.bullet_sectionheader - To style section header
hr.separator - To style the ruler for the separator *}
{if $count > 0}
<ul id="primary-nav">
{foreach from=$nodelist item=node}
{if $node->depth > $node->prevdepth}
{repeat string="<ul>" times=$node->depth-$node->prevdepth}
{elseif $node->depth < $node->prevdepth}
{repeat string="</li></ul>" times=$node->prevdepth-$node->depth}
</li>
{elseif $node->index > 0}
</li>
{/if}
{if $node->current == true or $node->parent == true}
<li id="current"><a href="{$node->url}"{if $node->target ne ""} target="{$node->target}"{/if} title="{$node->menutext}">{$node->menutext}</a>
{elseif $node->type == 'sectionheader'}
<li><a href="{$node->url}"><span>{$node->menutext}</span></a>
{elseif $node->type == 'separator'}
<li style="list-style-type: none;"><hr class="separator" />
{else}
<li><a href="{$node->url}"{if $node->target ne ""} target="{$node->target}"{/if} title="{$node->menutext}">{$node->menutext}</a>
{/if}
{/foreach}
{repeat string="</li></ul>" times=$node->depth-2}</li> </ul>
{/if}
vertikal:
{* CSS classes used in this template:
.current - The current page in the vertical (local) menu.
.bullet_sectionheader - To style section header
hr.separator - To style the ruler for the separator *}
{if $count > 0}
<ul id="menuvert" class="menu_vert">
{foreach from=$nodelist item=node}
{if $node->depth > $node->prevdepth}
{repeat string="<ul>" times=$node->depth-$node->prevdepth}
{elseif $node->depth < $node->prevdepth}
{repeat string="</li></ul>" times=$node->prevdepth-$node->depth}
</li>
{elseif $node->index > 0}</li>
{/if}
{if $node->current == true}
<li class="current"><a class="current" href="{$node->url}"{if $node->target ne ""} target="{$node->target}"{/if}title="{$node->menutext}">{$node->menutext}</a>
{elseif $node->type == 'sectionheader'}
<li><span class="bullet_sectionheader">{$node->menutext}</span>
{elseif $node->type == 'separator'}
<li style="list-style-type: none;"><hr class="separator" />
{else}
<li><a href="{$node->url}"{if $node->target ne ""} target="{$node->target}"{/if} title="{$node->menutext}">{$node->menutext}</a>{/if}
{/foreach}
{repeat string="</li></ul>" times=$node->depth-2}</li>
</ul>
{/if}
Wie muss das mit den Menüs aussehen?? Ich weiß nicht, wie und was ich gegen was ersetzen soll. Gibt es hierzu eine Dokumentation oder sowas, mit der man das wirklich schaffen kann?
Danke.
Offline
#41 01. Juni 2011 18:36
- jeff1980
- Server-Pate
- Ort: Dortmund
- Registriert: 26. November 2010
- Beiträge: 630
Re: [GELÖST] Speedprobleme verursacht durch den Menumanager
Hi,
wärme auch diesen älteren Thread noch mal auf.
Mittlerweile ist ein gutes halbes Jahr vergangen und ich habe heute die Zeit gefunden, noch mal ein Update von www.festtagsgedichte.de durchzuführen.
Installiert war (und ist nun auch wieder) Version 1.8.2
Ich habe ein direktes Update auf die 1.9.4.2 versucht.
Beim letzten Versuch hat die Seite ja enorm lange benötigt, um zu laden (20 Sekunden) und heraus kam, dass es mit der hohen Seitenanzahl (ca. 2500) und dem darauf nicht ausgelegten MenüManager zu tun hat.
Heute bekam ich aber sowohl im Frontend als auch im Backend beim Öffnen der Seitenübersicht diese Fehlermeldung:
Fatal error: Maximum execution time of 30 seconds exceeded in /is/htdocs/'Pfad unseres Servers'/www/festtagsgedichte_relaunch/lib/classes/class.cms_tree.php on line 125
Die Zeile variiert - mal ist es 114, mal 142 oder eben 125.
Debug-Modus bringt nichts, da er gar nicht erst so weit kommt, um etwas auszugeben.
Es kann doch nicht sein, dass es immer noch nicht funktioniert. Mal davon ab, dass bestimmte Module nicht genutzt werden können und auch so einige echt schöne Funktionen fehlen. Ich bekomme langsam Angst wegen der Sicherheit. Ich habe zwar alles Mögliche gemacht, was in den Sicherheits-Threads besprochen wird. Dennoch ist mir gerade nach der letzten Meldung mit den News etwas bange. Die News werden zwar nicht eingesetzt, aber 1.8.2 ist eben alt.
Hat jemand eine Idee, was ich tun kann?
Das Menü von Piratos bekomme ich nicht eingebunden. Tags und UDTs und PHP sind immer noch nicht so wirklich meine Welt...
Um mal eine alte Band zu zitieren:
Help!
Jan
Offline
#42 02. Juni 2011 21:19
- jeff1980
- Server-Pate
- Ort: Dortmund
- Registriert: 26. November 2010
- Beiträge: 630
Re: [GELÖST] Speedprobleme verursacht durch den Menumanager
Noch mal hi,
hatte gerade noch eine Idee und frage mich, ob es funktionieren könnte.
Mir kam der Gedanke, ob ich nicht eine komplett neue Installation aufsetze, die entsprechenden Module in der aktuellsten Version installiere, alle Templates/Stylesheets usw. von der aktuellen Version Stück für Stück kopiere und die UDTs übertrage.
Einzig den ganzen Content würde ich dann per SQL übertragen (eben alle Content-Tabellen, sind ja glaube ich nur 4 Stück). Manuell wäre es definitiv zu viel.
Weshalb ich hier nun vorher noch mal frage - wahrscheinlich liegt das Problem genau in den Content-Tabellen, oder?
Offline
#43 03. Juni 2011 22:07
- nockenfell
- Moderator
- Ort: Gontenschwil, Schweiz
- Registriert: 09. November 2010
- Beiträge: 2.934
- Webseite
Re: [GELÖST] Speedprobleme verursacht durch den Menumanager
Es wäre eine Möglichkeit zum herausfinden ob du das Problem so lösen kannst. Verlieren kannst du damit nichts.
[dieser Beitrag wurde mit 100% recycled bits geschrieben]
Mein Blog / Diverse Links rund um CMS Made Simple
Module: btAdminer, ToolBox
Offline
#44 03. Juni 2011 23:53
- X-TREM
- probiert CMS/ms aus
- Registriert: 17. Dezember 2010
- Beiträge: 95
- Webseite
Re: [GELÖST] Speedprobleme verursacht durch den Menumanager
Noch mal hi,
hatte gerade noch eine Idee und frage mich, ob es funktionieren könnte.
Mir kam der Gedanke, ob ich nicht eine komplett neue Installation aufsetze, die entsprechenden Module in der aktuellsten Version installiere, alle Templates/Stylesheets usw. von der aktuellen Version Stück für Stück kopiere und die UDTs übertrage.
Einzig den ganzen Content würde ich dann per SQL übertragen (eben alle Content-Tabellen, sind ja glaube ich nur 4 Stück). Manuell wäre es definitiv zu viel.
Weshalb ich hier nun vorher noch mal frage - wahrscheinlich liegt das Problem genau in den Content-Tabellen, oder?
Genau die gleiche Idee hatte ich auch. Wollte ebenfalls eine komplett neue Installation machen. Werde es wohl auch morgen oder so mal anstoßen. Evtl. noch heute. Sollte nicht allzu lange dauern, Sicherung ist ganz wichtig
Offline
#45 03. Juni 2011 05:24
- jeff1980
- Server-Pate
- Ort: Dortmund
- Registriert: 26. November 2010
- Beiträge: 630
Re: [GELÖST] Speedprobleme verursacht durch den Menumanager
Werde es dann auch mal probieren. Wollte nur mal hier fragen, da es bei unserer Seite sicher einiges dauert - da hängt mittlerweile dermaßen viel hinter.
Aber ich werde alles Stück für Stück übernehmen und immer wieder schauen, wie schnell die Seite ist. Wenn es nicht am vielen Content liegt, finde ich so vielleicht endlich den Schuldigen, falls die Seite wieder langsam wird.
Aufgrund der nahenden 1.10 ist es mir echt wichtig, mal weiter zu kommen. Die 1.8.2 ist ja schon fast ein Jahr alt.
Beitrag geändert von jeff1980 (03. Juni 2011 05:25)
Offline
#46 03. Juni 2011 15:12
- jeff1980
- Server-Pate
- Ort: Dortmund
- Registriert: 26. November 2010
- Beiträge: 630
Re: [GELÖST] Speedprobleme verursacht durch den Menumanager
So, mühsam ernährt sich das Eichhörnchen.
Ich versuche mal, auf die Reihe zu bekommen, was ich heute ausprobiert und herausgefunden habe.
1. Ich habe eine saubere Installation von der 1.9.4.2 in einem neuen Verzeichnis und mit eigener Domain gemacht - im Prinzip wirklich so, als wenn ich eine neue Seite aufsetze. Ich habe dann aus der aktuellen Seite die Tabellen
content
content_props
content_props_seq
content_seq
exportiert, diese Tabellen in der neuen Installation gelöscht und dann den Export der akutellen Seite importiert.
Dann habe ich, da sich ja auch an Content-Tabellen was geändert hat, den Eintrag in der Tabelle "version" auf "33" gesetzt und ein "Upgrade" durchgeführt - dabei wurden die Content-Tabellen an das neue Schema angepasst.
Als ich dann die Seite aufrufen wollte, kam wieder dieser Fehler:
Fatal error: Maximum execution time of 30 seconds exceeded in /is/htdocs/'Pfad unseres Servers'/www/festtagsgedichte_relaunch/lib/classes/class.cms_tree.php on line 125
Ich habe dann das Limit auf 60 Sekunden gesetzt und siehe da - die Seite lädt auf einmal. Und danach ging es dann auch immer schneller bzw. in normaler Geschwindigkeit (dazu gleich noch mehr).
Gut, am vielen Inhalt liegt es also wohl nicht.
2. Ich war dann so kühn und habe (natürlich nach Datei- und Datenbank-Backup) das Update bei der laufenden Installation gemacht. Auch hier war jetzt das Zeitlimit auf 60 Sekunden und nach einem ersten langsamen Laden ging es danach sehr flott. Die Seite hat im Frontend funktioniert wie sie soll. Alle Module, Tags und sonstige Erweiterungen haben brav ihren Job gemacht.
Aber:
Im Backend waren einige Bereiche dermaßen träge, dass ich das Ganze mit dem Backup wieder auf Urzustand gesetzt habe.
3. Ich habe mir noch mal die neue Installation aus 1. genauer angeschaut. Da ich nun das Limit auf 60 Sekunden gesetzt habe, konnte ich auch den Debug-Modus aktivieren. War aber eigentlich gar nicht nötig.
Ich habe herausgefunden, dass alle Seiten im Backend, in denen der TinyMCE geladen wird (Inhaltsseiten, Globale Einstellungen etc.), extrem langsam sind (ca. 30-40 Sekunden). Ich habe ihn dann mal deinstalliert und siehe da - alles läuft wie geschmiert.
Der Tiny scheint also der Übeltäter für die trägen Bereiche im Backend zu sein.
Dann habe ich noch mal geschaut, warum denn die Seite beim ersten Besuch nach dem Update immer so lange lädt (40 Sekunden). Dabei habe ich herausgefunden, dass es irgendetwas mit den Templates zu tun haben muss.
Zum Testen habe ich einfach das Standard-Template verwendet. Ich habe dann mal ein frisches Template erstellt und auf alle Seiten angewendet. Schon hat es im Frontend wieder einmalig 40 Sekunden gedauert, bis was kam.
Dies ist nun bei jedem Templatewechsel so. Ist nicht schön, aber zu verschmerzen - so oft wird es ja nicht gewechselt.
Fazit:
Das Update funktioniert sehr wohl - allerdings macht der Tiny nun richtig Probleme. Ich habe auch mal versucht, die (ältere) Version 2.7.3 zu installieren. Es ändert leider nichts.
Was kann man da noch tun? Ich habe mal geschaut, aber keinen anderen (aktuellen) Editor unter dev.cmsmadesimple.org gefunden.
Beitrag geändert von jeff1980 (03. Juni 2011 15:14)
Offline
#47 06. Juni 2011 06:09
- Andynium
- Moderator
- Ort: Dohna / SN / Deutschland
- Registriert: 13. September 2010
- Beiträge: 7.018
- Webseite
Re: [GELÖST] Speedprobleme verursacht durch den Menumanager
Bitte mal dies testen
Offline
#48 20. August 2013 19:30
- mike-r
- arbeitet mit CMS/ms
- Registriert: 21. Dezember 2010
- Beiträge: 898
- Webseite
Re: [GELÖST] Speedprobleme verursacht durch den Menumanager
Bin gerade am rumtesten in 1.11.7
Hier mal eine leicht modifizierte Version von PowerMenu für CMSms 1.9+
(sind wirklich nur wenige Zeilen)$page_hierarchy = $content_obj->Hierarchy(); // mod by NaN: compatibility fix for CMSms 1.9+ (30.11.2010)
Hier verabschiedet sich das Template (beim Einfügen von {powermenu}) mit:
Fatal error: Call to a member function Hierarchy() on a non-object in [...]/plugins/function.powermenu.php on line 60
Jemand ne Idee dazu? Hat das überhaupt schon mal jemand zum laufen bekommen?
Beitrag geändert von mike-r (21. August 2013 19:19)
Unablässige Tools für's Webdevelopement/ Fehlerfindung: CSS Validierungsservice, Bildschirmlineal, Firebug, Tidy, Deutsche CSS-Referenz
Offline
#49 11. September 2013 08:24
- NaN
- Moderator
- Ort: Halle (Saale)
- Registriert: 09. November 2010
- Beiträge: 4.437
Re: [GELÖST] Speedprobleme verursacht durch den Menumanager
Hier verabschiedet sich das Template (beim Einfügen von {powermenu})
Im Frontent oder im Backend?
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
#50 18. September 2013 01:15
- mike-r
- arbeitet mit CMS/ms
- Registriert: 21. Dezember 2010
- Beiträge: 898
- Webseite
Re: [GELÖST] Speedprobleme verursacht durch den Menumanager
NaN: im Backend - es wird auch zum Glück nicht gespeichert ...
Unablässige Tools für's Webdevelopement/ Fehlerfindung: CSS Validierungsservice, Bildschirmlineal, Firebug, Tidy, Deutsche CSS-Referenz
Offline