Βελτιστοποίηση απόδοσης
XOOPS Βελτιστοποίηση απόδοσης
Ενότητα με τίτλο «XOOPS Βελτιστοποίηση απόδοσης»Πλήρης οδηγός για τη βελτιστοποίηση του XOOPS για μέγιστη ταχύτητα και απόδοση.
Επισκόπηση βελτιστοποίησης απόδοσης
Ενότητα με τίτλο «Επισκόπηση βελτιστοποίησης απόδοσης»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]Διαμόρφωση προσωρινής αποθήκευσης
Ενότητα με τίτλο «Διαμόρφωση προσωρινής αποθήκευσης»Η προσωρινή αποθήκευση είναι ο ταχύτερος τρόπος βελτίωσης της απόδοσης.
# Προσωρινή αποθήκευση σε επίπεδο σελίδας
Ενότητα με τίτλο «# Προσωρινή αποθήκευση σε επίπεδο σελίδας»Ενεργοποίηση προσωρινής αποθήκευσης πλήρους σελίδας στο XOOPS:
Πίνακας διαχειριστή > Σύστημα > Προτιμήσεις > Ρυθμίσεις προσωρινής μνήμης
Enable Caching: YesCache Type: File Cache (or APCu/Memcache)Cache Lifetime: 3600 seconds (1 hour)Cache Module Lists: YesCache Configuration: YesCache Search Results: Yes# Προσωρινή αποθήκευση βάσει αρχείων
Ενότητα με τίτλο «# Προσωρινή αποθήκευση βάσει αρχείων»Διαμόρφωση θέσης προσωρινής μνήμης αρχείου:
# 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
Ενότητα με τίτλο «# APCu Caching»Το APCu παρέχει προσωρινή αποθήκευση στη μνήμη (πολύ γρήγορα):
# 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 = 128Ενεργοποίηση στο XOOPS:
Πίνακας διαχειριστή > Σύστημα > Προτιμήσεις > Ρυθμίσεις προσωρινής μνήμης
Cache Type: APCu# Memcache/Redis Προσωρινή αποθήκευση
Ενότητα με τίτλο «# Memcache/Redis Προσωρινή αποθήκευση»Κατανεμημένη προσωρινή αποθήκευση για ιστότοπους υψηλής επισκεψιμότητας:
Εγκατάσταση Memcache:
# Install Memcache serverapt-get install memcached
# Start servicesystemctl start memcachedsystemctl enable memcached
# Verify runningnetstat -tlnp | grep memcached# Should show listening on port 11211Διαμόρφωση σε XOOPS:
Επεξεργασία mainfile.php:
// Memcache configurationdefine('XOOPS_CACHE_TYPE', 'memcache');define('XOOPS_CACHE_HOST', 'localhost');define('XOOPS_CACHE_PORT', 11211);define('XOOPS_CACHE_TIMEOUT', 0);Ή στον πίνακα διαχείρισης:
Cache Type: MemcacheMemcache Host: localhost:11211# Προσωρινή αποθήκευση προτύπων
Ενότητα με τίτλο «# Προσωρινή αποθήκευση προτύπων»Μεταγλώττιση και αποθήκευση προτύπων XOOPS:
# Ensure templates_c is writablechmod 777 /var/www/html/xoops/templates_c/
# Clear old cached templatesrm -rf /var/www/html/xoops/templates_c/*Διαμόρφωση στο θέμα:
<!-- In theme xoops_version.php -->{smarty.const.XOOPS_VAR_PATH|constant}<{$xoops_meta}>
<!-- Templates use caching -->{cache} [Cached content here]{/cache}Βελτιστοποίηση βάσης δεδομένων
Ενότητα με τίτλο «Βελτιστοποίηση βάσης δεδομένων»# Προσθήκη ευρετηρίων βάσεων δεδομένων
Ενότητα με τίτλο «# Προσθήκη ευρετηρίων βάσεων δεδομένων»Οι σωστά ευρετηριασμένες βάσεις δεδομένων υποβάλλουν ερωτήματα πολύ πιο γρήγορα.
-- 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\G# Βελτιστοποίηση πινάκων
Ενότητα με τίτλο «# Βελτιστοποίηση πινάκων»Η κανονική βελτιστοποίηση πίνακα βελτιώνει την απόδοση:
-- 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;Δημιουργία σεναρίου αυτοματοποιημένης βελτιστοποίησης:
#!/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!"Πρόγραμμα με cron:
# Weekly optimizationcrontab -e# Add: 0 3 * * 0 /usr/local/bin/optimize-xoops-db.sh# Βελτιστοποίηση ερωτημάτων
Ενότητα με τίτλο «# Βελτιστοποίηση ερωτημάτων»Έλεγχος αργών ερωτημάτων:
-- 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.logΚοινές τεχνικές βελτιστοποίησης:
// 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'];}# Αύξηση του Buffer Pool
Ενότητα με τίτλο «# Αύξηση του Buffer Pool»Διαμόρφωση MySQL for better caching:
Επεξεργασία /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 = 10Επανεκκινήστε τη MySQL:
systemctl restart mysqlΒελτιστοποίηση διακομιστή Ιστού
Ενότητα με τίτλο «Βελτιστοποίηση διακομιστή Ιστού»# Ενεργοποιήστε τη συμπίεση Gzip
Ενότητα με τίτλο «# Ενεργοποιήστε τη συμπίεση Gzip»Συμπίεση αποκρίσεων για μείωση του εύρους ζώνης:
Διαμόρφωση Apache:
<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:
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";Επαλήθευση συμπίεσης:
# Check if response is gzippedcurl -I -H "Accept-Encoding: gzip" http://your-domain.com/xoops/
# Should show:# Content-Encoding: gzip# Κεφαλίδες προσωρινής αποθήκευσης προγράμματος περιήγησης
Ενότητα με τίτλο «# Κεφαλίδες προσωρινής αποθήκευσης προγράμματος περιήγησης»Ορισμός λήξης προσωρινής μνήμης για στατικά στοιχεία:
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";}# Σύνδεση Keep-Alive
Ενότητα με τίτλο «# Σύνδεση Keep-Alive»Ενεργοποίηση μόνιμων συνδέσεων HTTP:
Apache:
<IfModule mod_http.c> KeepAlive On KeepAliveTimeout 15 MaxKeepAliveRequests 100</IfModule>Nginx:
keepalive_timeout 15s;keepalive_requests 100;Βελτιστοποίηση Frontend
Ενότητα με τίτλο «Βελτιστοποίηση Frontend»# Βελτιστοποίηση εικόνων
Ενότητα με τίτλο «# Βελτιστοποίηση εικόνων»Μειώστε τα μεγέθη αρχείων εικόνας:
# 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-optimized# Ελαχιστοποίηση CSS και JavaScript
Ενότητα με τίτλο «# Ελαχιστοποίηση CSS και JavaScript»Μειώστε τα μεγέθη αρχείων CSS/JS:
Χρήση εργαλείων Node.js:
# Install minifiersnpm install -g uglify-js clean-css-cli
# Minify JavaScriptuglifyjs script.js -o script.min.js
# Minify CSScleancss style.css -o style.min.cssΧρήση διαδικτυακών εργαλείων:
- CSS Ελαχιστοποιητής: https://cssminifier.com/
- JavaScript Minifier: https://www.minifycode.com/javascript-minifier/
# Lazy Load Images
Ενότητα με τίτλο «# Lazy Load Images»Φόρτωση εικόνων μόνο όταν χρειάζεται:
<!-- 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># Μειώστε τους πόρους αποκλεισμού απόδοσης
Ενότητα με τίτλο «# Μειώστε τους πόρους αποκλεισμού απόδοσης»Φορτώστε το CSS/JS στρατηγικά:
<!-- 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 Ενσωμάτωση
Ενότητα με τίτλο «CDN Ενσωμάτωση»Χρησιμοποιήστε ένα δίκτυο παράδοσης περιεχομένου για ταχύτερη παγκόσμια πρόσβαση.
# Δημοφιλή CDN
Ενότητα με τίτλο «# Δημοφιλή CDN»| CDN | Κόστος | Χαρακτηριστικά |
|---|---|---|
| Cloudflare | Free/Paid | DDoS, DNS, προσωρινή μνήμη, Analytics |
| AWS CloudFront | Πληρωμένο | Υψηλή απόδοση, παγκόσμια |
| Λαγουδάκι CDN | Προσιτό | Αποθήκευση, βίντεο, προσωρινή μνήμη |
| jsDelivr | Δωρεάν | Βιβλιοθήκες JavaScript |
| cdnjs | Δωρεάν | Δημοφιλείς βιβλιοθήκες |
# Ρύθμιση Cloudflare
Ενότητα με τίτλο «# Ρύθμιση Cloudflare»-
Εγγραφείτε στο https://www.cloudflare.com/
-
Προσθέστε τον τομέα σας
-
Ενημερώστε τους nameservers με τους Cloudflare’s
-
Ενεργοποιήστε τις επιλογές προσωρινής αποθήκευσης:
- Επίπεδο προσωρινής μνήμης: Επιθετικό
- Προσωρινή αποθήκευση σε όλα: Ενεργό
- Προσωρινή αποθήκευση προγράμματος περιήγησης TTL: 1 μήνας
-
Στο XOOPS, ενημερώστε τον τομέα σας για να χρησιμοποιήσετε το Cloudflare DNS
# Ρύθμιση παραμέτρων CDN στο XOOPS
Ενότητα με τίτλο «# Ρύθμιση παραμέτρων CDN στο XOOPS»Ενημερώστε τις διευθύνσεις URL εικόνων στο CDN:
Επεξεργασία προτύπου θέματος:
<!-- Original --><img src="{$xoops_url}/uploads/image.jpg" alt="">
<!-- With CDN --><img src="https://cdn.your-domain.com/uploads/image.jpg" alt="">Ή ορίστε στο PHP:
// 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="">Παρακολούθηση απόδοσης
Ενότητα με τίτλο «Παρακολούθηση απόδοσης»# Δοκιμή PageSpeed Insights
Ενότητα με τίτλο «# Δοκιμή PageSpeed Insights»Δοκιμάστε την απόδοση του ιστότοπού σας:
- Επισκεφτείτε το Google PageSpeed Insights: https://pagespeed.web.dev/
- Εισαγάγετε το XOOPS URL
- Ελέγξτε τις συστάσεις
- Εφαρμογή προτεινόμενων βελτιώσεων
# Παρακολούθηση απόδοσης διακομιστή
Ενότητα με τίτλο «# Παρακολούθηση απόδοσης διακομιστή»Παρακολούθηση μετρήσεων διακομιστή σε πραγματικό χρόνο:
# Install monitoring toolsapt-get install htop iotop nethogs
# Monitor CPU and memoryhtop
# Monitor disk I/Oiotop
# Monitor networknethogs# PHP Προφίλ απόδοσης
Ενότητα με τίτλο «# PHP Προφίλ απόδοσης»Προσδιορίστε τον αργό κωδικό PHP:
<?php// Use Xdebug for profilingxdebug_start_trace('profile');
// Your code here$result = someExpensiveFunction();
xdebug_stop_trace();?># MySQL Query Monitoring
Ενότητα με τίτλο «# MySQL Query Monitoring»Παρακολούθηση αργών ερωτημάτων:
# 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\GΛίστα ελέγχου βελτιστοποίησης απόδοσης
Ενότητα με τίτλο «Λίστα ελέγχου βελτιστοποίησης απόδοσης»Εφαρμόστε αυτά για καλύτερη απόδοση:
- Caching: Ενεργοποίηση file/APCu/Memcache προσωρινής αποθήκευσης
- Βάση δεδομένων: Προσθήκη ευρετηρίων, βελτιστοποίηση πινάκων
- Συμπίεση: Ενεργοποιήστε τη συμπίεση Gzip
- Προσωρινή μνήμη προγράμματος περιήγησης: Ορισμός κεφαλίδων προσωρινής μνήμης
- Εικόνες: Βελτιστοποίηση και συμπίεση
- CSS/JS: Ελαχιστοποίηση αρχείων
- Lazy Loading: Εφαρμογή για εικόνες
- CDN: Χρήση για στατικά στοιχεία
- Keep-Alive: Ενεργοποίηση μόνιμων συνδέσεων
- Ενότητες: Απενεργοποιήστε τις αχρησιμοποίητες μονάδες
- Θέματα: Χρησιμοποιήστε ελαφριά, βελτιστοποιημένα θέματα
- Παρακολούθηση: Παρακολούθηση μετρήσεων απόδοσης
- Τακτική συντήρηση: Εκκαθάριση προσωρινής μνήμης, βελτιστοποίηση DB
Σενάριο βελτιστοποίησης απόδοσης
Ενότητα με τίτλο «Σενάριο βελτιστοποίησης απόδοσης»Αυτοματοποιημένη βελτιστοποίηση:
#!/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"Μετρήσεις πριν και μετά
Ενότητα με τίτλο «Μετρήσεις πριν και μετά»Βελτιώσεις παρακολούθησης:
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)Επόμενα βήματα
Ενότητα με τίτλο «Επόμενα βήματα»- Ελέγξτε τη βασική διαμόρφωση
- Εξασφαλίστε μέτρα ασφαλείας
- Εφαρμογή προσωρινής αποθήκευσης
- Παρακολούθηση της απόδοσης με εργαλεία
- Προσαρμογή βάσει μετρήσεων
Ετικέτες: #performance #optimization #caching #database #cdn
Σχετικά άρθρα:
- ../../06-Publisher-Module/User-Guide/Basic-Configuration
- Ρυθμίσεις συστήματος
- Ασφάλεια-Διαμόρφωση
- ../Installation/Server-Requirements