Leistungsoptimierung

SLAED CMS wurde mit dem Fokus auf hohe Leistung und effiziente Ressourcennutzung entwickelt. Um jedoch maximale Seitengeschwindigkeit zu erreichen, müssen Sie das System und die Serverumgebung ordnungsgemäß konfigurieren.

Leistungsanalyse

Eingebaute Werkzeuge

SLAED CMS bietet eingebaute Werkzeuge für die Leistungsanalyse:

  • Systeminformationen - systeminfo.php - Systemeigenschaften, PHP/MySQL-Versionen, Ressourcennutzung
  • Kompatibilitätsprüfung - check_compat.php - Analyse der Systemanforderungen
  • Datei-Schreibtest - test_write.php - Dateiberechtigungen und Schreibgeschwindigkeitstest

Externe Werkzeuge

Für eine detailliertere Analyse können Sie folgende Werkzeuge verwenden:

  • Google PageSpeed Insights - Webseiten-Leistungsanalyse
  • GTmetrix - Umfassende Geschwindigkeitsanalyse
  • Pingdom Tools - Test der Seitenladezeit
  • WebPageTest - Detaillierte Leistungsanalyse

PHP-Optimierung

php.ini-Einstellungen

Für optimale SLAED CMS-Leistung verwenden Sie die folgende PHP-Konfiguration:

; Speicher
memory_limit = 256M

; Ausführungszeit
max_execution_time = 300
max_input_time = 300

; Datei-Uploads
upload_max_filesize = 32M
post_max_size = 32M
max_file_uploads = 20

; OPcache (wesentlich für die Leistung)
opcache.enable = 1
opcache.memory_consumption = 128
opcache.max_accelerated_files = 4000
opcache.revalidate_freq = 60
opcache.save_comments = 0
opcache.fast_shutdown = 1

; Sitzungen
session.gc_maxlifetime = 86400
session.cookie_lifetime = 0
session.cookie_secure = 1
session.cookie_httponly = 1
session.cookie_samesite = "Strict"

; Sicherheit
expose_php = Off
display_errors = Off
log_errors = On

PHP-Erweiterungen

Erforderliche Erweiterungen für die Leistung:

  • OPcache - PHP-Bytecode-Caching
  • mysqli - Optimierter MySQL-Zugriff
  • gd - Bildverarbeitung
  • zip - Archivverwaltung

Empfohlene Erweiterungen:

  • APCu - In-Memory-Benutzer-Cache
  • Redis - Verteilter Cache
  • Memcached - Hochleistungs-Cache

Datenbank-Optimierung

MySQL/MariaDB-Einstellungen

Empfohlene Einstellungen für my.cnf:

[mysqld]
# Puffer
innodb_buffer_pool_size = 256M
innodb_log_buffer_size = 16M
key_buffer_size = 64M

# Protokolle
innodb_log_file_size = 64M
innodb_flush_log_at_trx_commit = 2

# Abfrage-Cache
query_cache_type = 1
query_cache_size = 32M
query_cache_limit = 2M

# Verbindungen
max_connections = 100
max_connect_errors = 10

# Optimierung
skip-name-resolve
table_open_cache = 2000
table_definition_cache = 2000

Tabellen-Optimierung

Regelmäßige Tabellen-Optimierung:

-- Optimieren aller SLAED CMS Tabellen
OPTIMIZE TABLE sl_users, sl_modules, sl_config, sl_blocks, sl_categories;

Caching

Eingebautes SLAED CMS Caching

SLAED CMS bietet ein mehrstufiges Caching-System:

  1. Seiten-Caching - Vollständiges HTML-Seiten-Caching mit konfigurierbarer Lebensdauer
  2. CSS/JavaScript-Caching - Dateizusammenführung und Minimierung
  3. Block-Caching - Individuelles Block-Caching mit separaten Lebensdauern

Cache-Konfiguration

In config/config_core.php:

$conf = array(
    // Block-Caching
    'cache_b' => '1',           // Block-Caching aktivieren
    'cache_d' => '7',           // Cache-Tage
    'cache_t' => '3600',        // Cache-Lebensdauer (Sekunden)
    
    // CSS/JS-Caching
    'cache_css' => '1',         // CSS-Caching
    'cache_script' => '1',      // JavaScript-Caching
    
    // Komprimierung
    'css_c' => '1',             // CSS-Komprimierung
    'script_c' => '1',          // JavaScript-Komprimierung
    'html_compress' => '1',     // HTML-Komprimierung
);

Externe Caching-Systeme

Redis

// Redis-Verbindung
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);

// Caching-Funktionen
function cache_get_redis($key) {
    global $redis;
    return $redis->get($key);
}

function cache_set_redis($key, $data, $ttl = 3600) {
    global $redis;
    return $redis->setex($key, $ttl, $data);
}

Memcached

// Memcached-Verbindung
$memcached = new Memcached();
$memcached->addServer('localhost', 11211);

// Caching-Funktionen
function cache_get_memcached($key) {
    global $memcached;
    return $memcached->get($key);
}

function cache_set_memcached($key, $data, $ttl = 3600) {
    global $memcached;
    return $memcached->set($key, $data, $ttl);
}

Webserver-Optimierung

Apache

Optimieren Sie .htaccess:

# Statische Datei-Caching
<IfModule mod_expires.c>
    ExpiresActive On
    ExpiresByType text/css "access plus 1 month"
    ExpiresByType application/javascript "access plus 1 month"
    ExpiresByType image/png "access plus 1 month"
    ExpiresByType image/jpg "access plus 1 month"
    ExpiresByType image/jpeg "access plus 1 month"
    ExpiresByType image/gif "access plus 1 month"
    ExpiresByType image/svg+xml "access plus 1 month"
</IfModule>

# Komprimierung
<IfModule mod_deflate.c>
    AddOutputFilterByType DEFLATE text/plain
    AddOutputFilterByType DEFLATE text/html
    AddOutputFilterByType DEFLATE text/xml
    AddOutputFilterByType DEFLATE text/css
    AddOutputFilterByType DEFLATE application/xml
    AddOutputFilterByType DEFLATE application/xhtml+xml
    AddOutputFilterByType DEFLATE application/rss+xml
    AddOutputFilterByType DEFLATE application/javascript
    AddOutputFilterByType DEFLATE application/x-javascript
</IfModule>

# ETags
<IfModule mod_headers.c>
    Header unset ETag
    FileETag None
</IfModule>

Nginx

Optimieren Sie die Nginx-Konfiguration:

server {
    # Statische Datei-Caching
    location ~* \.(css|js|png|jpg|jpeg|gif|ico|svg)$ {
        expires 1M;
        add_header Cache-Control "public, immutable";
        add_header Vary "Accept-Encoding";
    }
    
    # Komprimierung
    gzip on;
    gzip_vary on;
    gzip_min_length 1024;
    gzip_proxied any;
    gzip_comp_level 6;
    gzip_types
        text/plain
        text/css
        text/xml
        text/javascript
        application/javascript
        application/xml+rss
        application/json;
}

Bildoptimierung

Bildformate

Empfohlene Formate:

  • WebP - Modernes Format mit besserer Komprimierung
  • AVIF - Next-Generation-Bildformate
  • JPEG - Für Fotos
  • PNG - Für Bilder mit Transparenz

Automatische Optimierung

SLAED CMS unterstützt automatische Bildoptimierung:

// Bildoptimierung beim Upload
function optimize_image($source, $destination, $quality = 85) {
    $info = getimagesize($source);
    
    switch ($info['mime']) {
        case 'image/jpeg':
            $image = imagecreatefromjpeg($source);
            imagejpeg($image, $destination, $quality);
            break;
        case 'image/png':
            $image = imagecreatefrompng($source);
            imagepng($image, $destination, floor($quality/10)-1);
            break;
        case 'image/webp':
            $image = imagecreatefromwebp($source);
            imagewebp($image, $destination, $quality);
            break;
    }
    
    imagedestroy($image);
}

CDN (Content Delivery Network)

CDN-Integration

Um CDN zu verwenden, konfigurieren Sie diese Parameter:

  1. Statische Dateien
// In der Konfiguration
$conf['cdn_url'] = 'https://cdn.yoursite.com';
  1. Ressourcenverbindung
<link rel="stylesheet" href="https://cdn.yoursite.com/templates/default/theme.css">
<script src="https://cdn.yoursite.com/plugins/jquery/jquery.min.js"></script>

Lazy Loading

Lazy Loading für Bilder

Implementierung von Lazy Loading:

<!-- Bilder mit Lazy Loading -->
<img data-src="image.jpg" alt="Beschreibung" class="lazy" loading="lazy">
// JavaScript für Lazy Loading
document.addEventListener("DOMContentLoaded", function() {
    const lazyImages = [].slice.call(document.querySelectorAll("img.lazy"));
    
    if ("IntersectionObserver" in window) {
        let lazyImageObserver = new IntersectionObserver(function(entries, observer) {
            entries.forEach(function(entry) {
                if (entry.isIntersecting) {
                    let lazyImage = entry.target;
                    lazyImage.src = lazyImage.dataset.src;
                    lazyImage.classList.remove("lazy");
                    lazyImageObserver.unobserve(lazyImage);
                }
            });
        });
        
        lazyImages.forEach(function(lazyImage) {
            lazyImageObserver.observe(lazyImage);
        });
    }
});

Leistungsüberwachung

Leistungsprotokollierung

Aktivieren Sie die Ausführungszeitprotokollierung:

// In der Konfiguration
$conf['log_performance'] = 1;
$conf['performance_threshold'] = 1000; // ms

// Protokollierung langsamer Abfragen
function log_slow_query($query, $time) {
    global $conf;
    if ($time > $conf['performance_threshold']) {
        error_log("Langsame Abfrage: {$query} ({$time}ms)", 3, LOGS_DIR.'/performance.log');
    }
}

Warnmeldungen

Konfigurieren Sie Benachrichtigungen bei Leistungsproblemen:

// Warnmeldungen senden
function send_performance_alert($issue, $details) {
    $subject = "Leistungswarnung: {$issue}";
    $message = "Leistungsproblem erkannt:\n\n{$details}";
    mail(ADMIN_EMAIL, $subject, $message);
}

Skalierung

Horizontale Skalierung

Für Websites mit hohem Traffic:

  1. Lastverteilung
upstream slaed_backend {
    server 192.168.1.10:8080;
    server 192.168.1.11:8080;
    server 192.168.1.12:8080;
}
  1. Datenbank-Aufteilung - Master-Slave-Replikation, Tabellen-Sharding

Vertikale Skalierung

Erhöhen Sie die Serverressourcen:

  • Leistungsstärkerer Prozessor
  • Mehr RAM
  • SSD-Speicher
  • Dedizierter Server

Optimierungsempfehlungen

Checkliste

  • Aktivieren und konfigurieren Sie OPcache
  • Optimieren Sie die PHP-Einstellungen
  • Konfigurieren Sie das MySQL-Caching
  • Aktivieren Sie das SLAED CMS-Caching
  • Optimieren Sie Bilder
  • Verwenden Sie CDN für statische Dateien
  • Aktivieren Sie Gzip-Komprimierung
  • Konfigurieren Sie das Browser-Caching
  • Implementieren Sie Lazy Loading
  • Führen Sie Lasttests durch

Regelmäßige Wartung

Wöchentlich

  • Optimierung von Datenbanktabellen
  • Protokollbereinigung
  • Cache-Überprüfung

Monatlich

  • Leistungsanalyse
  • Updates von PHP und MySQL
  • Sicherung

Quartalsweise

  • Code-Audit
  • Sicherheitsprüfung
  • Updates von Erweiterungen

Durch die Einhaltung dieser Empfehlungen können Sie maximale Leistung für Ihre SLAED CMS-Website erreichen und ein hervorragendes Benutzererlebnis gewährleisten.