ข้ามไปยังเนื้อหา

การเพิ่มประสิทธิภาพการทำงาน

คำแนะนำที่ครอบคลุมในการเพิ่มประสิทธิภาพ XOOPS เพื่อความเร็วและประสิทธิภาพสูงสุด

mermaid
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: Yes
Cache Type: File Cache (or APCu/Memcache)
Cache Lifetime: 3600 seconds (1 hour)
Cache Module Lists: Yes
Cache Configuration: Yes
Cache Search Results: Yes

กำหนดค่าตำแหน่งแคชไฟล์:

Terminal window
# Create cache directory outside web root (more secure)
mkdir -p /var/cache/xoops
chown www-data:www-data /var/cache/xoops
chmod 755 /var/cache/xoops
# Edit mainfile.php
define('XOOPS_CACHE_PATH', '/var/cache/xoops/');

APCu ให้การแคชในหน่วยความจำ (เร็วมาก):

Terminal window
# Install APCu
apt-get install php-apcu
# Verify installation
php -m | grep apcu
# Configure in php.ini
apc.enabled = 1
apc.memory_size = 128M
apc.ttl = 0
apc.user_ttl = 3600
apc.shm_size = 128

เปิดใช้งานใน XOOPS:

แผงผู้ดูแลระบบ > ระบบ > การตั้งค่า > การตั้งค่าแคช

Cache Type: APCu

แคชแบบกระจายสำหรับไซต์ที่มีการเข้าชมสูง:

ติดตั้ง Memcache:

Terminal window
# Install Memcache server
apt-get install memcached
# Start service
systemctl start memcached
systemctl enable memcached
# Verify running
netstat -tlnp | grep memcached
# Should show listening on port 11211

กำหนดค่าใน XOOPS:

แก้ไข mainfile.php:

// Memcache configuration
define('XOOPS_CACHE_TYPE', 'memcache');
define('XOOPS_CACHE_HOST', 'localhost');
define('XOOPS_CACHE_PORT', 11211);
define('XOOPS_CACHE_TIMEOUT', 0);

หรือในแผงผู้ดูแลระบบ:

Cache Type: Memcache
Memcache Host: localhost:11211

คอมไพล์และแคชเทมเพลต XOOPS:

Terminal window
# Ensure templates_c is writable
chmod 777 /var/www/html/xoops/templates_c/
# Clear old cached templates
rm -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 indexes
SHOW INDEXES FROM xoops_users;
-- Common indexes to add
ALTER 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 tables
ALTER 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 created
SHOW INDEXES FROM xoops_users\G

การเพิ่มประสิทธิภาพตารางปกติช่วยเพิ่มประสิทธิภาพ:

-- Optimize all tables
OPTIMIZE TABLE xoops_users;
OPTIMIZE TABLE xoops_posts;
OPTIMIZE TABLE xoops_config;
OPTIMIZE TABLE xoops_comments;
-- Or optimize all at once
REPAIR 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 tables
OPTIMIZE TABLE xoops_users;
OPTIMIZE TABLE xoops_posts;
OPTIMIZE TABLE xoops_config;
OPTIMIZE TABLE xoops_comments;
OPTIMIZE TABLE xoops_users_online;
-- Show database size
SELECT table_schema,
ROUND(SUM(data_length + index_length) / 1024 / 1024, 2) as total_mb
FROM information_schema.tables
WHERE table_schema = 'xoops_db'
GROUP BY table_schema;
EOF
echo "Database optimization completed!"

กำหนดเวลาด้วย cron:

Terminal window
# Weekly optimization
crontab -e
# Add: 0 3 * * 0 /usr/local/bin/optimize-xoops-db.sh

ตรวจสอบข้อความค้นหาที่ช้า:

-- Enable slow query log
SET GLOBAL slow_query_log = 'ON';
SET GLOBAL long_query_time = 2;
-- View slow queries
SELECT * FROM mysql.slow_log;
-- Or check slow log file
tail -100 /var/log/mysql/slow.log

เทคนิคการเพิ่มประสิทธิภาพทั่วไป:

// SLOW - Avoid unnecessary queries in loops
foreach ($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'];
}

กำหนดค่า MySQL เพื่อการแคชที่ดีขึ้น:

แก้ไข /etc/mysql/mysql.conf.d/mysqld.cnf:

ini
# 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 = 64M
query_cache_type = 1
# Max Connections
max_connections = 500
# Max Allowed Packet
max_allowed_packet = 256M
# Connection timeout
connect_timeout = 10

รีสตาร์ท MySQL:

Terminal window
systemctl restart mysql

บีบอัดการตอบสนองเพื่อลดแบนด์วิดท์:

การกำหนดค่า Apache:

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:

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 formats
gzip_disable "msie6";

ตรวจสอบการบีบอัด:

Terminal window
# Check if response is gzipped
curl -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";
}

เปิดใช้งานการเชื่อมต่อ HTTP แบบถาวร:

อาปาเช่:

apache
<IfModule mod_http.c>
KeepAlive On
KeepAliveTimeout 15
MaxKeepAliveRequests 100
</IfModule>

งินซ์:

nginx
keepalive_timeout 15s;
keepalive_requests 100;

ลดขนาดไฟล์รูปภาพ:

Terminal window
# Batch compress JPEG images
for img in *.jpg; do
convert "$img" -quality 85 "optimized_$img"
done
# Batch compress PNG images
for img in *.png; do
optipng -o2 "$img"
done
# Or use imagemin CLI
npm install -g imagemin-cli
imagemin images/ --out-dir=images-optimized

ลดขนาดไฟล์ CSS/JS:

การใช้เครื่องมือ Node.js:

Terminal window
# Install minifiers
npm install -g uglify-js clean-css-cli
# Minify JavaScript
uglifyjs script.js -o script.min.js
# Minify CSS
cleancss style.css -o style.min.css

การใช้เครื่องมือออนไลน์:

โหลดภาพเมื่อจำเป็นเท่านั้น:

<!-- 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ราคาคุณสมบัติ
คลาวด์แฟลร์ฟรี/จ่ายเงินDDoS, DNS, แคช, การวิเคราะห์
AWS CloudFrontจ่ายแล้วประสิทธิภาพสูงระดับโลก
กระต่าย CDNราคาไม่แพงพื้นที่เก็บข้อมูล วิดีโอ แคช
jsDelivrฟรีไลบรารี JavaScript
cdnjsฟรีห้องสมุดยอดนิยม
  1. ลงทะเบียนที่ https://www.cloudflare.com/

  2. เพิ่มโดเมนของคุณ

  3. อัปเดตเนมเซิร์ฟเวอร์ด้วย Cloudflare’s

  4. เปิดใช้งานตัวเลือกการแคช:

    • ระดับแคช: ก้าวร้าว
    • แคชทุกอย่าง: เปิด
    • การแคชเบราว์เซอร์ TTL: 1 เดือน
  5. ใน XOOPS อัปเดตโดเมนของคุณเพื่อใช้ Cloudflare DNS

อัปเดต 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 config
define('XOOPS_CDN_URL', 'https://cdn.your-domain.com');
// In template
<img src="{$smarty.const.XOOPS_CDN_URL}/uploads/image.jpg" alt="">

ทดสอบประสิทธิภาพไซต์ของคุณ:

  1. ไปที่ Google PageSpeed Insights: https://pagespeed.web.dev/
  2. ป้อน XOOPS URL ของคุณ
  3. ทบทวนข้อเสนอแนะ
  4. ดำเนินการปรับปรุงที่แนะนำ

ตรวจสอบตัวชี้วัดเซิร์ฟเวอร์แบบเรียลไทม์:

Terminal window
# Install monitoring tools
apt-get install htop iotop nethogs
# Monitor CPU and memory
htop
# Monitor disk I/O
iotop
# Monitor network
nethogs

ระบุรหัส PHP ที่ช้า:

<?php
// Use Xdebug for profiling
xdebug_start_trace('profile');
// Your code here
$result = someExpensiveFunction();
xdebug_stop_trace();
?>

ติดตามการสืบค้นที่ช้า:

Terminal window
# Enable query logging
mysql -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 queries
tail -f /var/log/mysql/slow.log
# Analyze query with EXPLAIN
EXPLAIN SELECT * FROM xoops_users WHERE uid = 1\G

รายการตรวจสอบการเพิ่มประสิทธิภาพประสิทธิภาพ

หัวข้อที่มีชื่อว่า “รายการตรวจสอบการเพิ่มประสิทธิภาพประสิทธิภาพ”

ใช้สิ่งเหล่านี้เพื่อประสิทธิภาพที่ดีที่สุด:

  • การแคช: เปิดใช้งานการแคชไฟล์/APCu/Memcache
  • ฐานข้อมูล: เพิ่มดัชนี เพิ่มประสิทธิภาพตาราง
  • การบีบอัด: เปิดใช้งานการบีบอัด Gzip
  • แคชของเบราว์เซอร์: ตั้งค่าส่วนหัวของแคช
  • รูปภาพ: ปรับให้เหมาะสมและบีบอัด
  • CSS/JS: ย่อขนาดไฟล์
  • Lazy Loading: ใช้กับรูปภาพ
  • CDN: ใช้สำหรับสินทรัพย์คงที่
  • Keep-Alive: เปิดใช้งานการเชื่อมต่อแบบถาวร
  • โมดูล: ปิดการใช้งานโมดูลที่ไม่ได้ใช้
  • ธีม: ใช้ธีมน้ำหนักเบาและปรับให้เหมาะสม
  • การตรวจสอบ: ติดตามตัวชี้วัดประสิทธิภาพ
  • การบำรุงรักษาปกติ: ล้างแคช เพิ่มประสิทธิภาพ DB

การเพิ่มประสิทธิภาพอัตโนมัติ:

#!/bin/bash
# Performance optimization script
echo "=== XOOPS Performance Optimization ==="
# Clear cache
echo "Clearing cache..."
rm -rf /var/www/html/xoops/cache/*
rm -rf /var/www/html/xoops/templates_c/*
# Optimize database
echo "Optimizing database..."
mysql -u xoops_user -p xoops_db << EOF
OPTIMIZE TABLE xoops_users;
OPTIMIZE TABLE xoops_posts;
OPTIMIZE TABLE xoops_config;
OPTIMIZE TABLE xoops_comments;
EOF
# Check file permissions
echo "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/cache
chmod 777 /var/www/html/xoops/templates_c
chmod 777 /var/www/html/xoops/uploads
chmod 777 /var/www/html/xoops/var
# Generate performance report
echo "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)
  1. ตรวจสอบการกำหนดค่าพื้นฐาน
  2. จัดให้มีมาตรการรักษาความปลอดภัย
  3. ใช้แคช
  4. ตรวจสอบประสิทธิภาพด้วยเครื่องมือ
  5. ปรับตามเมตริก

แท็ก: #ประสิทธิภาพ #การเพิ่มประสิทธิภาพ #แคช #ฐานข้อมูล #cdn

บทความที่เกี่ยวข้อง:

  • ../../06-Publisher-Module/User-Guide/Basic-Configuration
  • ระบบ-การตั้งค่า
  • ความปลอดภัย-การกำหนดค่า
  • ../การติดตั้ง/ข้อกำหนดเซิร์ฟเวอร์