Leistungsoptimierung
XOOPS-Leistungsoptimierung
Abschnitt betitelt „XOOPS-Leistungsoptimierung“Umfassender Leitfaden zur Optimierung von XOOPS für maximale Geschwindigkeit und Effizienz.
Übersicht der Leistungsoptimierung
Abschnitt betitelt „Übersicht der Leistungsoptimierung“graph TD A[Performance] --> B[Caching] A --> C[Database] A --> D[Web Server] A --> E[Frontend] A --> F[Code] B --> B1[Page Cache] B --> B2[Query Cache] B --> B3[Template Cache] C --> C1[Indexes] C --> C2[Queries] C --> C3[Optimization] D --> D1[Compression] D --> D2[Headers] D --> D3[Connection] E --> E1[Images] E --> E2[CSS/JS] E --> E3[Lazy Load] F --> F1[Modules] F --> F2[Queries]Cache-Konfiguration
Abschnitt betitelt „Cache-Konfiguration“Caching ist der schnellste Weg zur Leistungsverbesserung.
Caching auf Seitenebene
Abschnitt betitelt „Caching auf Seitenebene“Aktivieren Sie vollständiges Seiten-Caching in XOOPS:
Admin-Panel > System > Preferences > Cache Settings
Enable Caching: YesCache Type: File Cache (or APCu/Memcache)Cache Lifetime: 3600 seconds (1 hour)Cache Module Lists: YesCache Configuration: YesCache Search Results: YesDatei-basiertes Caching
Abschnitt betitelt „Datei-basiertes Caching“Konfigurieren Sie den Cache-Speicherort:
# Create cache directory outside web root (more secure)mkdir -p /var/cache/xoopschown www-data:www-data /var/cache/xoopschmod 755 /var/cache/xoops
# Edit mainfile.phpdefine('XOOPS_CACHE_PATH', '/var/cache/xoops/');APCu-Caching
Abschnitt betitelt „APCu-Caching“APCu bietet In-Memory-Caching (sehr schnell):
# Install APCuapt-get install php-apcu
# Verify installationphp -m | grep apcu
# Configure in php.iniapc.enabled = 1apc.memory_size = 128Mapc.ttl = 0apc.user_ttl = 3600apc.shm_size = 128Aktivieren Sie in XOOPS:
Admin-Panel > System > Preferences > Cache Settings
Cache Type: APCuMemcache/Redis-Caching
Abschnitt betitelt „Memcache/Redis-Caching“Verteiltes Caching für Websites mit hohem Traffic:
Memcache installieren:
# Install Memcache serverapt-get install memcached
# Start servicesystemctl start memcachedsystemctl enable memcached
# Verify runningnetstat -tlnp | grep memcached# Should show listening on port 11211Konfigurieren Sie in XOOPS:
Bearbeiten Sie mainfile.php:
// Memcache configurationdefine('XOOPS_CACHE_TYPE', 'memcache');define('XOOPS_CACHE_HOST', 'localhost');define('XOOPS_CACHE_PORT', 11211);define('XOOPS_CACHE_TIMEOUT', 0);Oder im Admin-Panel:
Cache Type: MemcacheMemcache Host: localhost:11211Template-Caching
Abschnitt betitelt „Template-Caching“Kompilieren und Cache XOOPS-Templates:
# Ensure templates_c is writablechmod 777 /var/www/html/xoops/templates_c/
# Clear old cached templatesrm -rf /var/www/html/xoops/templates_c/*Konfigurieren Sie im Theme:
<!-- In theme xoops_version.php -->{smarty.const.XOOPS_VAR_PATH|constant}<{$xoops_meta}>
<!-- Templates use caching -->{cache} [Cached content here]{/cache}Datenbankoptimierung
Abschnitt betitelt „Datenbankoptimierung“Datenbankindizes hinzufügen
Abschnitt betitelt „Datenbankindizes hinzufügen“Ordnungsgemäß indizierte Datenbanken führen viel schneller Abfragen durch.
-- Check current indexesSHOW INDEXES FROM xoops_users;
-- Common indexes to addALTER TABLE xoops_users ADD INDEX idx_uname (uname);ALTER TABLE xoops_users ADD INDEX idx_email (email);ALTER TABLE xoops_users ADD INDEX idx_uid_active (uid, user_actkey);
-- Add indexes to posts/content tablesALTER TABLE xoops_posts ADD INDEX idx_post_published (post_published);ALTER TABLE xoops_posts ADD INDEX idx_post_uid (post_uid);ALTER TABLE xoops_posts ADD INDEX idx_post_created (post_created);
-- Verify indexes createdSHOW INDEXES FROM xoops_users\GTabellen optimieren
Abschnitt betitelt „Tabellen optimieren“Regelmäßige Tabellenoptimierung verbessert die Leistung:
-- Optimize all tablesOPTIMIZE TABLE xoops_users;OPTIMIZE TABLE xoops_posts;OPTIMIZE TABLE xoops_config;OPTIMIZE TABLE xoops_comments;
-- Or optimize all at onceREPAIR TABLE xoops_users;OPTIMIZE TABLE xoops_users;REPAIR TABLE xoops_posts;OPTIMIZE TABLE xoops_posts;Erstellen Sie ein Optimierungsskript:
#!/bin/bash# Database optimization script
echo "Optimizing XOOPS database..."
mysql -u xoops_user -p xoops_db << EOF-- Optimize all tablesOPTIMIZE TABLE xoops_users;OPTIMIZE TABLE xoops_posts;OPTIMIZE TABLE xoops_config;OPTIMIZE TABLE xoops_comments;OPTIMIZE TABLE xoops_users_online;
-- Show database sizeSELECT table_schema, ROUND(SUM(data_length + index_length) / 1024 / 1024, 2) as total_mbFROM information_schema.tablesWHERE table_schema = 'xoops_db'GROUP BY table_schema;EOF
echo "Database optimization completed!"Planen Sie mit cron:
# Weekly optimizationcrontab -e# Add: 0 3 * * 0 /usr/local/bin/optimize-xoops-db.shAbfrage-Optimierung
Abschnitt betitelt „Abfrage-Optimierung“Überprüfen Sie langsame Abfragen:
-- Enable slow query logSET GLOBAL slow_query_log = 'ON';SET GLOBAL long_query_time = 2;
-- View slow queriesSELECT * FROM mysql.slow_log;
-- Or check slow log filetail -100 /var/log/mysql/slow.logHäufige Optimierungstechniken:
// SLOW - Avoid unnecessary queries in loopsforeach ($users as $user) { $profile = getUserProfile($user['uid']); // Query in loop! echo $profile['name'];}
// FAST - Get all data at once$profiles = getAllUserProfiles($user_ids);foreach ($users as $user) { echo $profiles[$user['uid']]['name'];}Puffer-Pool erhöhen
Abschnitt betitelt „Puffer-Pool erhöhen“Konfigurieren Sie MySQL für besseres Caching:
Bearbeiten Sie /etc/mysql/mysql.conf.d/mysqld.cnf:
# InnoDB Buffer Pool (50-80% of system RAM)innodb_buffer_pool_size = 1G
# Query Cache (optional, can be disabled in MySQL 5.7+)query_cache_size = 64Mquery_cache_type = 1
# Max Connectionsmax_connections = 500
# Max Allowed Packetmax_allowed_packet = 256M
# Connection timeoutconnect_timeout = 10MySQL neu starten:
systemctl restart mysqlWeb-Server-Optimierung
Abschnitt betitelt „Web-Server-Optimierung“Gzip-Kompression aktivieren
Abschnitt betitelt „Gzip-Kompression aktivieren“Komprimieren Sie Antworten zur Bandbreiteneinsparung:
Apache-Konfiguration:
<IfModule mod_deflate.c> AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript application/javascript application/json
# Don't compress images and already compressed files SetEnvIfNoCase Request_URI \.(jpg|jpeg|png|gif|zip|gzip)$ no-gzip dont-vary
# Log compressed responses DeflateBufferSize 8096</IfModule>Nginx-Konfiguration:
gzip on;gzip_types text/html text/plain text/css text/javascript application/javascript application/json;gzip_min_length 1000;gzip_vary on;gzip_comp_level 6;
# Don't compress already compressed formatsgzip_disable "msie6";Überprüfen Sie die Kompression:
# Check if response is gzippedcurl -I -H "Accept-Encoding: gzip" http://your-domain.com/xoops/
# Should show:# Content-Encoding: gzipBrowser-Caching-Header
Abschnitt betitelt „Browser-Caching-Header“Legen Sie Ablaufdaten für statische Assets fest:
Apache:
<IfModule mod_expires.c> ExpiresActive On
# Cache images for 30 days ExpiresByType image/jpeg "access plus 30 days" ExpiresByType image/gif "access plus 30 days" ExpiresByType image/png "access plus 30 days" ExpiresByType image/svg+xml "access plus 30 days"
# Cache CSS/JS for 30 days ExpiresByType text/css "access plus 30 days" ExpiresByType application/javascript "access plus 30 days" ExpiresByType text/javascript "access plus 30 days"
# Cache fonts for 1 year ExpiresByType font/eot "access plus 1 year" ExpiresByType font/ttf "access plus 1 year" ExpiresByType font/woff "access plus 1 year" ExpiresByType font/woff2 "access plus 1 year"
# Don't cache HTML ExpiresByType text/html "access plus 1 hour"</IfModule>Nginx:
location ~* \.(jpg|jpeg|png|gif|ico|svg|woff|woff2|ttf|eot)$ { expires 30d; add_header Cache-Control "public, immutable";}
location ~* \.(css|js)$ { expires 30d; add_header Cache-Control "public";}
location ~ \.html$ { expires 1h; add_header Cache-Control "public";}Dauerhafte HTTP-Verbindungen
Abschnitt betitelt „Dauerhafte HTTP-Verbindungen“Aktivieren Sie persistente HTTP-Verbindungen:
Apache:
<IfModule mod_http.c> KeepAlive On KeepAliveTimeout 15 MaxKeepAliveRequests 100</IfModule>Nginx:
keepalive_timeout 15s;keepalive_requests 100;Frontend-Optimierung
Abschnitt betitelt „Frontend-Optimierung“Bilder optimieren
Abschnitt betitelt „Bilder optimieren“Reduzieren Sie die Größe von Bilddateien:
# Batch compress JPEG imagesfor img in *.jpg; do convert "$img" -quality 85 "optimized_$img"done
# Batch compress PNG imagesfor img in *.png; do optipng -o2 "$img"done
# Or use imagemin CLInpm install -g imagemin-cliimagemin images/ --out-dir=images-optimizedCSS und JavaScript komprimieren
Abschnitt betitelt „CSS und JavaScript komprimieren“Reduzieren Sie CSS/JS-Dateigröße:
Mit Node.js-Tools:
# Install minifiersnpm install -g uglify-js clean-css-cli
# Minify JavaScriptuglifyjs script.js -o script.min.js
# Minify CSScleancss style.css -o style.min.cssMit Online-Tools:
- CSS Minifier: https://cssminifier.com/
- JavaScript Minifier: https://www.minifycode.com/javascript-minifier/
Bilder verzögert laden
Abschnitt betitelt „Bilder verzögert laden“Laden Sie Bilder nur bei Bedarf:
<!-- Add loading="lazy" attribute --><img src="image.jpg" alt="Description" loading="lazy">
<!-- Or use JavaScript library for older browsers --><img class="lazy" src="placeholder.jpg" data-src="image.jpg" alt="Description">
<script src="https://cdnjs.cloudflare.com/ajax/libs/vanilla-lazyload/17.1.2/lazyload.min.js"></script><script> var lazyLoad = new LazyLoad({ elements_selector: ".lazy" });</script>Rendering-blockierende Ressourcen reduzieren
Abschnitt betitelt „Rendering-blockierende Ressourcen reduzieren“Laden Sie CSS/JS strategisch:
<!-- Load critical CSS inline --><style> /* Critical styles for above-the-fold */</style>
<!-- Defer non-critical CSS --><link rel="stylesheet" href="style.css" media="print" onload="this.media='all'">
<!-- Defer JavaScript --><script src="script.js" defer></script>
<!-- Or use async for non-critical scripts --><script src="analytics.js" async></script>CDN-Integration
Abschnitt betitelt „CDN-Integration“Verwenden Sie ein Content Delivery Network für schnelleren globalen Zugriff.
Beliebte CDNs
Abschnitt betitelt „Beliebte CDNs“| CDN | Kosten | Features |
|---|---|---|
| Cloudflare | Free/Paid | DDoS, DNS, Cache, Analytics |
| AWS CloudFront | Paid | High performance, global |
| Bunny CDN | Affordable | Storage, video, cache |
| jsDelivr | Free | JavaScript libraries |
| cdnjs | Free | Popular libraries |
Cloudflare-Setup
Abschnitt betitelt „Cloudflare-Setup“-
Melden Sie sich unter https://www.cloudflare.com/ an
-
Fügen Sie Ihre Domain hinzu
-
Aktualisieren Sie Nameserver mit Cloudflare
-
Aktivieren Sie Caching-Optionen:
- Cache Level: Aggressive
- Caching on everything: On
- Browser Caching TTL: 1 month
-
Aktualisieren Sie in XOOPS Ihre Domain zur Verwendung von Cloudflare DNS
CDN in XOOPS konfigurieren
Abschnitt betitelt „CDN in XOOPS konfigurieren“Aktualisieren Sie Bild-URLs zu CDN:
Bearbeiten Sie Theme-Template:
<!-- Original --><img src="{$xoops_url}/uploads/image.jpg" alt="">
<!-- With CDN --><img src="https://cdn.your-domain.com/uploads/image.jpg" alt="">Oder legen Sie in PHP fest:
// In mainfile.php or configdefine('XOOPS_CDN_URL', 'https://cdn.your-domain.com');
// In template<img src="{$smarty.const.XOOPS_CDN_URL}/uploads/image.jpg" alt="">Leistungsüberwachung
Abschnitt betitelt „Leistungsüberwachung“PageSpeed Insights Test
Abschnitt betitelt „PageSpeed Insights Test“Testen Sie die Leistung Ihrer Site:
- Besuchen Sie Google PageSpeed Insights: https://pagespeed.web.dev/
- Geben Sie Ihre XOOPS-URL ein
- Überprüfen Sie Empfehlungen
- Implementieren Sie vorgeschlagene Verbesserungen
Server-Leistungsüberwachung
Abschnitt betitelt „Server-Leistungsüberwachung“Überwachen Sie Metriken in Echtzeit:
# Install monitoring toolsapt-get install htop iotop nethogs
# Monitor CPU and memoryhtop
# Monitor disk I/Oiotop
# Monitor networknethogsPHP-Leistungs-Profilierung
Abschnitt betitelt „PHP-Leistungs-Profilierung“Identifizieren Sie langsamen PHP-Code:
<?php// Use Xdebug for profilingxdebug_start_trace('profile');
// Your code here$result = someExpensiveFunction();
xdebug_stop_trace();?>MySQL-Abfrage-Überwachung
Abschnitt betitelt „MySQL-Abfrage-Überwachung“Verfolgen Sie langsame Abfragen:
# Enable query loggingmysql -u root -p
SET GLOBAL general_log = 'ON';SET GLOBAL log_output = 'FILE';SET GLOBAL general_log_file = '/var/log/mysql/query.log';
# Review slow queriestail -f /var/log/mysql/slow.log
# Analyze query with EXPLAINEXPLAIN SELECT * FROM xoops_users WHERE uid = 1\GCheckliste zur Leistungsoptimierung
Abschnitt betitelt „Checkliste zur Leistungsoptimierung“Implementieren Sie diese für beste Leistung:
- Caching: Aktivieren Sie Datei/APCu/Memcache-Caching
- Datenbank: Indizes hinzufügen, Tabellen optimieren
- Kompression: Gzip-Kompression aktivieren
- Browser-Cache: Cache-Header einstellen
- Bilder: Optimieren und komprimieren
- CSS/JS: Dateien minimieren
- Lazy Loading: Für Bilder implementieren
- CDN: Für statische Assets verwenden
- Keep-Alive: Persistente Verbindungen aktivieren
- Module: Ungenutzte Module deaktivieren
- Themes: Leichte, optimierte Themes verwenden
- Monitoring: Leistungsmetriken verfolgen
- Regelmäßige Wartung: Cache löschen, DB optimieren
Leistungsoptimierungs-Skript
Abschnitt betitelt „Leistungsoptimierungs-Skript“Automatisierte Optimierung:
#!/bin/bash# Performance optimization script
echo "=== XOOPS Performance Optimization ==="
# Clear cacheecho "Clearing cache..."rm -rf /var/www/html/xoops/cache/*rm -rf /var/www/html/xoops/templates_c/*
# Optimize databaseecho "Optimizing database..."mysql -u xoops_user -p xoops_db << EOFOPTIMIZE TABLE xoops_users;OPTIMIZE TABLE xoops_posts;OPTIMIZE TABLE xoops_config;OPTIMIZE TABLE xoops_comments;EOF
# Check file permissionsecho "Verifying file permissions..."find /var/www/html/xoops -type f -exec chmod 644 {} \;find /var/www/html/xoops -type d -exec chmod 755 {} \;chmod 777 /var/www/html/xoops/cachechmod 777 /var/www/html/xoops/templates_cchmod 777 /var/www/html/xoops/uploadschmod 777 /var/www/html/xoops/var
# Generate performance reportecho "Performance Optimization Complete!"echo ""echo "Next steps:"echo "1. Test site at https://pagespeed.web.dev/"echo "2. Monitor performance in admin panel"echo "3. Consider CDN for static assets"echo "4. Review slow queries in MySQL"Metriken vor und nach der Optimierung
Abschnitt betitelt „Metriken vor und nach der Optimierung“Verfolgen Sie Verbesserungen:
Before Optimization:- Page Load Time: 3.5 seconds- Database Queries: 45- Cache Hit Rate: 0%- Database Size: 250MB
After Optimization:- Page Load Time: 0.8 seconds (77% faster)- Database Queries: 8 (cached)- Cache Hit Rate: 85%- Database Size: 120MB (optimized)Nächste Schritte
Abschnitt betitelt „Nächste Schritte“- Überprüfen Sie die Grundkonfiguration
- Stellen Sie Sicherheitsmaßnahmen sicher
- Implementieren Sie Caching
- Überwachen Sie die Leistung mit Tools
- Passen Sie basierend auf Metriken an
Tags: #performance #optimization #caching #database #cdn
Related Articles:
- ../../06-Publisher-Module/User-Guide/Basic-Configuration
- System-Settings
- Security-Configuration
- ../Installation/Server-Requirements