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

#26 30. Januar 2011 12:35

nhaack
Server-Pate
Ort: Bonn
Registriert: 12. Dezember 2010
Beiträge: 171
Webseite

Re: [GELÖST] 1 Request Web's im Standard möglich

Das mit dem "echten" Pagespeed is' klar. Die Seite ist aber noch nicht öffentlich. Ich messe mit Firebug, das müsste doch zur Beurteilung ausreichen, oder?

Das ein UDT langsamer ist, hab ich verstanden. Liegt das erigentlich daran, dass ein UDT aus der DB geholt werden muss? Ich habe das als normales Plugin im Plugin-Ordner von CMSMS laufen. Was wäre die beste Methode für die Einbindung solcher Funktionen?

Auch das mit dem Mem_Cache habe ich wohl noch nicht ganz verstanden. Soweit ich informiert bin läuft auf dem Server eAccelerator. Der cached doch Teile der PHP Scripte. Was genau macht der Mem-Cache im Unterschied? Oder kann ich via Mem-Cache auch Daten von z.B. statische Inhalte der Festplatte bereit stellen?

Grüße
Nils

Offline

#27 30. Januar 2011 14:26

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

Re: [GELÖST] 1 Request Web's im Standard möglich

So wie ich das verstanden habe, ist Memcache dazu da, um Daten im Arbeitsspeicher zu halten damit sie beim erneuten Abruf sofort zur Verfügung stehen.

eAccelerator ist dazu da, um PHP Scripte in kompilierter Form im RAM zwischenzuspeichern (shared memory), damit sie nicht erneut vom PHP Parser kompiliert werden müssen.

Ersteres entlastet den Prozess zum Holen der Daten (aus der DB o. woher auch immer).
Letzteres entlastet lediglich beim Ausführen der Scripte.

Beides zusammen klingt für mich nach einem ordentlichen Boost.
(Auch wenn es nach meinem Verständnis mehr RAM benötigen dürfte)


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

#28 30. Januar 2011 15:41

piratos
Gast

Re: [GELÖST] 1 Request Web's im Standard möglich

Um mal Missverständnisse auszuräumen - der gepostete Code ist derjenige wie er unter pcms verwendet wird - kann man aber leicht anpassen.

UDT's sind von Nachteil weil sie aus der DB zu holen wären und wenn ein solcher Vorgang in einer Schleife wiederholt wird steigt die Last ziemlich an.

Da es ein pcms Code ist und memcache unterstützt wird ist da natürlich memcache code enthalten, den muss man für CMSMS entfernen.
Ich arbeite unter pcms mit allen Tricks und Mitteln und da gibt es eine ziemliche Anzahl von Powerusern deren Einsatz förmlich nach memcache schreit.

Memcache führt bei umfangreichen und vor allem reichlich unter Besucherstress stehenden Sites zu einem ordentlichen Boost, kostet aber eine Kleinigkeit.
Memcache wird als Dienst wie Apache oder Mysql selbst ausgeführt und beansprucht Serverram (so gut wie Null PHP Ram) und deswegen wird man es nur im Zusammenhang mit eigenem Server finden.

Auf wenig (durch Besucher)  beanspruchten Websites  ist memcache eher von Nachteil, bringt da wenig bis sogar etwas weniger Power, das dreht sich aber sehr schnell in das Gegenteil um wenn ordentlich etwas los ist auf der Site.

Beitrag geändert von piratos (30. Januar 2011 15:43)

#29 31. Januar 2011 00:05

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

Re: [GELÖST] 1 Request Web's im Standard möglich

Der Vollständigkeit zuliebe hier mal ein ähnliches Plugin für CMSms:

<?php
#-------------------------------------------------------------------------------
#
# Smarty Plugin : {base64_image}
# Purpose       : This plugin returns a base64 encoded image for embeding in css
# Author        : Georg Busch (NaN)
# Copyright     : 2011 Georg Busch (NaN)
# Version       : 1.0
# License       : GPL
#
#-------------------------------------------------------------------------------

function smarty_cms_function_base64_image($params, &$smarty) 
{
    global $config;
    $img_path = $config['uploads_path'] . DIRECTORY_SEPARATOR . $params['dir'];
    $base64_img = $img_url = $config['uploads_url'] . '/' . $params['dir'];
    
    $ie = false;
    $ie_version = 0;
    $user_agent = isset($_SERVER['HTTP_USER_AGENT']) ? strtolower($_SERVER['HTTP_USER_AGENT']) : false;
    if( stripos($user_agent,'msie') !== false && stripos($user_agent,'opera') === false ) {
        $ie_props = explode(' ',stristr(str_replace(';','; ',$user_agent),'msie'));
        $ie_version = preg_replace('/[^0-9,.,a-z,A-Z-]/','',str_replace(array('(',')',';'),'',$ie_props[1]));
        $ie = true;
    }
    
    $img_formats = array('png','jpg','jpeg','gif');
    $filetype = '';
    $use_mime = (isset($params['use_mime']) && $params['use_mime'] == true);
    if($use_mime)
    {
        if (version_compare(PHP_VERSION, '5.3.0') >= 0 && function_exists('finfo_open'))
        {
            $finfo    = finfo_open(FILEINFO_MIME_TYPE);
            $filetype = strtolower(finfo_file($finfo, $img_path));
            finfo_close($img_path);
        }
        else if(function_exists('mime_content_type'))
        {
            $filetype = strtolower(mime_content_type($img_path));
        }
    }
    else
    {
        $fileinfo = pathinfo($img_path);
        if(isset($fileinfo['extension']))
        {
            $filetype = strtolower($fileinfo['extension']);
        }
    }
    $filetype = str_replace('image/','',$filetype);
    
    if(($ie && $ie_version >= 8) || !$ie )
    {
        $base64_img_location    = $config['previews_path'] . DIRECTORY_SEPARATOR . base64_encode($img_path) . '_' . basename($img_path);
        $base64_img_file_exists = file_exists($base64_img_location);
        $img_file_exists        = file_exists($img_path) && is_file($img_path) && in_array($filetype,$img_formats);
        if($base64_img_file_exists
        && (($img_file_exists && filemtime($base64_img_location) > filemtime($img_path)) || !$img_file_exists)
        && (($ie_version < 9 && filesize($base64_img_location) < 32768) || $ie_version >= 9 || !$ie))
        {
            $base64_img = file_get_contents($base64_img_location);
        }
        else
        {
            @unlink($base64_img_location);
            if(file_exists($img_path) && is_file($img_path) && in_array($filetype,$img_formats))
            {
                $base64_img = 'data:image/'.$filetype.';base64,'.base64_encode(file_get_contents($img_path));
                if($fh = fopen($base64_img_location, 'w'))
                {
                    fwrite($fh,$base64_img);
                    fclose($fh);
                }
                if($ie && $ie_version < 9 && filesize($base64_img_location) > 32768)
                {
                    $base64_img = $img_url;
                }
            }
        }
    }
    echo $base64_img;
}

?>

Verwendung:

<img src="{base64_image dir="Pfad zum Bild" use_mime=true/false}" />

Als Rückgabewert erhält man entweder die URL zum original Bild oder Base64 URI Data.
Mit use_mime kann man festlegen, ob der Dateityp durch den MIME-TYPE oder anhand der Dateiendung erkannt werden soll.
Die Base64 Daten werden im Verzeichnis /tmp/cache/ gespeichert. (Wenn man den Zwischenspeicher löscht, löscht man auch die Base64 Daten).
Die Daten werden nur dann erstellt und gespeichert, wenn sie nicht schon existieren oder wenn das Änderungsdatum des Originalbildes neuer ist als die Base64 Daten.

Die IMG Tags habe ich weggelassen damit man das Script auch in den DB Stylesheets verwenden kann.
Internet Explorer kleiner als Version 8 bekommt generell nur die URL.
Internet Explorer kleiner als Version 9 bekommt nur Base64, wenn die Base64-Datei kleiner ist als 32kB .
Weitere Browser-Überprüfungen habe ich nicht drin.



Edit:

Die IMG Tags habe ich weggelassen damit man das Script auch in den DB Stylesheets verwenden kann.

War übrigens eine dumme Idee von mir.
CMSms speichert die Stylesheets ja leider nicht als Templates sondern schon komplett als CSS mit allem drum und dran.
D.h. das base64 Bild ist da schon drin (oder auch nicht, je nachdem wer der erste Besucher war) und dadurch wird das Script nicht nochmal ausgeführt sad

Naja, muss ich mir meinen eigenen Stylesheet Tag basteln. Oder alle Styles mit ins Template packen. Beim Thema "1 Request" wäre das sowieso besser. Kommt allerdings drauf an wie groß die Bilder/Stylesheets werden.


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

#30 31. Januar 2011 16:09

mountain
Gast

Re: [GELÖST] 1 Request Web's im Standard möglich

Das

soll doch bestimmt

bedeuten.

#31 31. Januar 2011 16:13

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

Re: [GELÖST] 1 Request Web's im Standard möglich

ups  yikes

Danke smile


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

#32 31. Januar 2011 16:40

piratos
Gast

Re: [GELÖST] 1 Request Web's im Standard möglich

Ein Problemchen  liegt noch darin das die NaN Browsererkennung keine Typen und Versionen anderer Hersteller berührt, da gibt es auch noch diverse Altlasten die das nicht verarbeiten können.

#33 31. Januar 2011 17:42

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

Re: [GELÖST] 1 Request Web's im Standard möglich

Wer es ganz genau nehmen will, kann auch gerne das Plugin {browsertools} nehmen um die Browserkennung durchzuführen und für jeden Typ jede einzelne Version zu berücksichtigen.
Das Plugin dürfte so ziemlich alle bekannten Browser erkennen.
Halte ich aber zumindest hierzulande für übertrieben.


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 31. Januar 2011 18:16

piratos
Gast

Re: [GELÖST] 1 Request Web's im Standard möglich

Also auch wenn wir jetzt Opera 11 schreiben muss es mindestens 9.8 sein z.B. , man muss sich nur auf 6 Browsertypen beschränken und die Version kennen, dann hat man es und liegt dann über 99,6% Abdeckung.

Für übertrieben halte ich das nicht.

Browsertools sind überflüssig und kosten  zuviel Zeit.

#35 31. Januar 2011 19:07

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

Re: [GELÖST] 1 Request Web's im Standard möglich

piratos schrieb:

Browsertools sind überflüssig und kosten zuviel Zeit.

Eben deshalb halte ich es ja für übertrieben.

piratos schrieb:

man muss sich nur auf 6 Browsertypen beschränken und die Version kennen, dann hat man es und liegt dann über 99,6% Abdeckung.

Und genau aus dieser Unkenntnis heraus habe ich mich erstmal nur auf den IE beschränkt.


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 09. September 2016 07:45

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

Re: [GELÖST] 1 Request Web's im Standard möglich

NaN schrieb:

Der Vollständigkeit zuliebe hier mal ein ähnliches Plugin für CMSms:

Hab das Plugin mal aktualisiert und mangels Schöpfungshöhe dich als Autor drin gelassen.

https://www.cmsmadesimple.de/forum/view … hp?id=4865

Hoffe, das ist okay für dich wink ...

Offline

#37 09. September 2016 17:14

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

Re: [GELÖST] 1 Request Web's im Standard möglich

Passt schon smile


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