بهینه سازی عملکرد
بهینه سازی عملکرد XOOPS
Section titled “بهینه سازی عملکرد XOOPS”راهنمای جامع بهینه سازی XOOPS برای حداکثر سرعت و کارایی.
بررسی اجمالی بهینه سازی عملکرد
Section titled “بررسی اجمالی بهینه سازی عملکرد”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]پیکربندی کش
Section titled “پیکربندی کش”کش کردن سریعترین راه برای بهبود عملکرد است.
ذخیره سازی سطح صفحه
Section titled “ذخیره سازی سطح صفحه”فعال کردن کش کامل صفحه در 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کش مبتنی بر فایل
Section titled “کش مبتنی بر فایل”پیکربندی مکان کش فایل:
# 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
Section titled “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: APCuMemcache/Redis ذخیره سازی
Section titled “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ذخیره الگو
Section titled “ذخیره الگو”کامپایل و کش قالب های 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}بهینه سازی پایگاه داده
Section titled “بهینه سازی پایگاه داده”فهرست های پایگاه داده را اضافه کنید
Section titled “فهرست های پایگاه داده را اضافه کنید”پایگاههای دادهای که بهدرستی فهرستبندی شدهاند، سریعتر پرسوجو میکنند.
-- 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جداول را بهینه کنید
Section titled “جداول را بهینه کنید”بهینه سازی منظم جدول عملکرد را بهبود می بخشد:
-- 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بهینه سازی پرس و جو
Section titled “بهینه سازی پرس و جو”بررسی سوالات کند:
-- 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'];}افزایش بافر Pool
Section titled “افزایش بافر Pool”MySQL را برای کش کردن بهتر پیکربندی کنید:
ویرایش /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 را مجدداً راه اندازی کنید:
systemctl restart mysqlبهینه سازی وب سرور
Section titled “بهینه سازی وب سرور”فشرده سازی Gzip را فعال کنید
Section titled “فشرده سازی Gzip را فعال کنید”فشرده سازی پاسخ ها برای کاهش پهنای باند:
پیکربندی آپاچی:
<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سرصفحه های ذخیره مرورگر
Section titled “سرصفحه های ذخیره مرورگر”تنظیم انقضای حافظه پنهان برای دارایی های استاتیک:
آپاچی:
<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
Section titled “اتصال Keep-Alive”اتصالات HTTP دائمی را فعال کنید:
آپاچی:
<IfModule mod_http.c> KeepAlive On KeepAliveTimeout 15 MaxKeepAliveRequests 100</IfModule>Nginx:
keepalive_timeout 15s;keepalive_requests 100;بهینه سازی Frontend
Section titled “بهینه سازی Frontend”تصاویر را بهینه کنید
Section titled “تصاویر را بهینه کنید”کاهش اندازه فایل های تصویری:
# 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 و جاوا اسکریپت را کوچک کنید
Section titled “CSS و جاوا اسکریپت را کوچک کنید”کاهش اندازه فایل 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 Minifier: https://cssminifier.com/
- Minifier جاوا اسکریپت: https://www.minifycode.com/javascript-minifier/
تصاویر بارگذاری تنبل
Section titled “تصاویر بارگذاری تنبل”بارگیری تصاویر فقط در صورت نیاز:
<!-- 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>منابع مسدودکننده رندر را کاهش دهید
Section titled “منابع مسدودکننده رندر را کاهش دهید”بارگذاری استراتژیک 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
Section titled “یکپارچه سازی CDN”از یک شبکه تحویل محتوا برای دسترسی جهانی سریعتر استفاده کنید.
CDN های محبوب
Section titled “CDN های محبوب”| CDN | هزینه | ویژگی ها |
|---|---|---|
| Cloudflare | Free/Paid | DDoS، DNS، Cache، Analytics |
| AWS CloudFront | پرداخت شده | عملکرد بالا، جهانی |
| بانی CDN | مقرون به صرفه | ذخیره سازی، ویدئو، کش |
| jsDelivr | رایگان | کتابخانه های جاوا اسکریپت |
| cdnjs | رایگان | کتابخانه های محبوب |
راه اندازی Cloudflare
Section titled “راه اندازی Cloudflare”-
در https://www.cloudflare.com/ ثبت نام کنید
-
دامنه خود را اضافه کنید
-
سرورهای نام را با Cloudflare به روز کنید
-
گزینه های کش را فعال کنید:
- سطح حافظه پنهان: تهاجمی
- ذخیره روی همه چیز: روشن
- ذخیره مرورگر TTL: 1 ماه
-
در XOOPS، دامنه خود را برای استفاده از Cloudflare DNS به روز کنید
CDN را در XOOPS پیکربندی کنید
Section titled “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="">نظارت بر عملکرد
Section titled “نظارت بر عملکرد”تست بینش سرعت صفحه
Section titled “تست بینش سرعت صفحه”عملکرد سایت خود را تست کنید:
- از Google PageSpeed Insights دیدن کنید: https://pagespeed.web.dev/
- URL XOOPS خود را وارد کنید
- توصیه ها را مرور کنید
- بهبودهای پیشنهادی را اجرا کنید
نظارت بر عملکرد سرور
Section titled “نظارت بر عملکرد سرور”نظارت بر معیارهای سرور بلادرنگ:
# Install monitoring toolsapt-get install htop iotop nethogs
# Monitor CPU and memoryhtop
# Monitor disk I/Oiotop
# Monitor networknethogsپروفایل عملکرد PHP
Section titled “پروفایل عملکرد PHP”کدهای کند PHP را شناسایی کنید:
<?php// Use Xdebug for profilingxdebug_start_trace('profile');
// Your code here$result = someExpensiveFunction();
xdebug_stop_trace();?>نظارت بر پرس و جو MySQL
Section titled “نظارت بر پرس و جو MySQL”پیگیری درخواستهای کند:
# 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چک لیست بهینه سازی عملکردبرای بهترین عملکرد این موارد را اجرا کنید:
Section titled “چک لیست بهینه سازی عملکردبرای بهترین عملکرد این موارد را اجرا کنید:”- ذخیره سازی: ذخیره سازی file/APCu/Memcache را فعال کنید
- پایگاه داده: فهرست ها را اضافه کنید، جداول را بهینه کنید
- ** فشرده سازی: ** فشرده سازی Gzip را فعال کنید
- ** کش مرورگر: ** تنظیم سرصفحه های کش
- تصاویر: بهینه سازی و فشرده سازی
- CSS/JS: کوچک کردن فایل ها
- ** بارگذاری تنبل:** برای تصاویر پیاده سازی کنید
- CDN: برای دارایی های ثابت استفاده کنید
- Keep-Alive: اتصالات مداوم را فعال کنید
- ماژول ها: ماژول های استفاده نشده را غیرفعال کنید
- موضوع: از تم های سبک و بهینه استفاده کنید
- ** نظارت: ** معیارهای عملکرد را پیگیری کنید
- ** تعمیر و نگهداری منظم: ** حافظه پنهان را پاک کنید، DB را بهینه کنید
اسکریپت بهینه سازی عملکرد
Section titled “اسکریپت بهینه سازی عملکرد”بهینه سازی خودکار:
#!/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"معیارهای قبل و بعد
Section titled “معیارهای قبل و بعد”پیشرفت های مسیر:
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)مراحل بعدی
Section titled “مراحل بعدی”- تنظیمات اولیه را مرور کنید
- تدابیر امنیتی را تضمین کنید
- کش را پیاده سازی کنید
- نظارت بر عملکرد با ابزار
- بر اساس معیارها تنظیم کنید
برچسب ها: #عملکرد #بهینه سازی #کش #پایگاه داده #cdn
مقالات مرتبط:
- ../../06-Publisher-Module/User-Guide/Basic-Configuration
- تنظیمات سیستم
- امنیت-پیکربندی
- ../Installation/Server-Requirements