⚡
Hosting · Performance

ถ้าเว็บ PHP ของคุณรู้สึกช้าทั้งที่เลือก Hosting สเปกดีแล้ว หนึ่งในสาเหตุที่พบบ่อยที่สุดคือ PHP ต้องทำงานซ้ำซ้อนกับโค้ดทุก Request โดยไม่จำเป็น และตัวช่วยที่ได้ผลเร็วที่สุด ฟรี ไม่ต้องแก้โค้ดแม้แต่บรรทัดเดียว คือ PHP OPcache — ส่วนขยายที่ฝังมากับ PHP ตั้งแต่เวอร์ชัน 5.5 แต่หลายคนยังไม่รู้ว่ามีอยู่

✓

AsiaGB เปิด PHP OPcache บน Shared Hosting ทุกเครื่องโดยค่าเริ่มต้น

ลูกค้า AsiaGB ทุกแพ็กเกจได้รับ OPcache พร้อมใช้งานทันทีโดยไม่ต้องเปิดเองหรือจ่ายเพิ่ม เซิร์ฟเวอร์ทุกเครื่องตั้งค่า OPcache ให้เหมาะสมกับ Shared Hosting ไว้ล่วงหน้าแล้ว ลูกค้าสามารถปรับค่าเพิ่มเติมผ่าน DirectAdmin ได้เองตามต้องการ

PHP OPcache คืออะไร และทำงานอย่างไร

ก่อนอธิบาย OPcache ต้องเข้าใจก่อนว่า PHP ปกติทำงานอย่างไรเมื่อมี Request เข้ามา ทุกครั้งที่เบราว์เซอร์ขอหน้าเว็บ PHP จะทำขั้นตอนเหล่านี้กับทุกไฟล์ .php ที่เกี่ยวข้อง:

  1. อ่านไฟล์จากดิสก์ (Read) — PHP เปิดไฟล์ .php แต่ละไฟล์จากพื้นที่เก็บข้อมูล ซึ่งใช้เวลาพอสมควรโดยเฉพาะเว็บที่มีไฟล์จำนวนมาก
  2. แปลงเป็น Tokens (Tokenize / Lex) — PHP Engine อ่านซอร์สโค้ดและแบ่งออกเป็นหน่วยย่อยที่เรียกว่า Token เช่น ตัวแปร ฟังก์ชัน ตัวดำเนินการ
  3. Parse และสร้าง AST (Abstract Syntax Tree) — Token ถูกนำมาสร้างเป็นโครงสร้างต้นไม้เพื่อแสดงความหมายของโค้ด
  4. คอมไพล์เป็น Opcode — AST ถูกแปลงเป็นชุดคำสั่งระดับต่ำที่เรียกว่า Opcode ซึ่ง PHP Engine (Zend Engine) เข้าใจและรันได้โดยตรง
  5. รัน Opcode — Zend Engine ประมวลผล Opcode และส่งผลลัพธ์ออกมาเป็น HTML ที่ส่งกลับไปยังเบราว์เซอร์

ปัญหาคือขั้นตอน 1-4 ทั้งหมดนี้เกิดขึ้น ซ้ำทุก Request ทุกครั้ง แม้โค้ดจะไม่ได้เปลี่ยนเลย ลองนึกภาพว่า WordPress โหลดไฟล์ PHP ประมาณ 300-500 ไฟล์ต่อหนึ่งหน้า เว็บที่มีคนเข้า 1,000 ครั้งต่อวันหมายความว่า PHP ต้องอ่านและคอมไพล์ไฟล์เดิมซ้ำๆ อาจถึงหลักล้านครั้ง — นั่นคือการทำงานซ้ำซ้อนที่สิ้นเปลืองทรัพยากรโดยเปล่าประโยชน์

OPcache แก้ปัญหานี้ โดยเก็บ Opcode ที่คอมไพล์เสร็จแล้วจากขั้นตอนที่ 4 ไว้ใน Shared Memory (หน่วยความจำร่วม) ซึ่งทุก PHP Process บนเซิร์ฟเวอร์เข้าถึงได้ เมื่อ Request ถัดไปเข้ามาขอไฟล์เดิม PHP จะข้ามขั้นตอน 1-4 ทั้งหมดและดึง Opcode จาก RAM มาใช้ทันที ไม่ต้องอ่านดิสก์ ไม่ต้องคอมไพล์ใหม่ — ลดเวลาส่วนนั้นลงได้หลายเท่า

สรุปหลักการ: OPcache = Cache ของ Opcode ใน RAM — PHP ข้ามการอ่านไฟล์และคอมไพล์ซ้ำ ผลลัพธ์คือ TTFB (Time to First Byte) ลดลง CPU ใช้น้อยลง เซิร์ฟเวอร์รองรับคนพร้อมกันได้มากขึ้น

ตัวเลขประสิทธิภาพจริง: OPcache เร็วขึ้นแค่ไหน

ผลลัพธ์จะแตกต่างกันไปตามลักษณะเว็บ แต่โดยทั่วไปที่พบในการทดสอบบน PHP Applications ทั่วไป:

30–60%
ลด TTFB ส่วน PHP สำหรับ WordPress ทั่วไป
2–5×
Throughput สูงขึ้นบนแอปที่มี PHP Files มาก
40–70%
ลด CPU Usage จากการข้ามขั้นตอน Compile

เว็บที่เห็นผลชัดเจนที่สุดคือเว็บที่มีไฟล์ PHP จำนวนมากต่อหนึ่ง Request อย่าง WordPress ที่มีปลั๊กอินหลายตัว, WooCommerce, Laravel พร้อม Vendor Libraries หรือ Magento ที่มีไฟล์หลายพันไฟล์ ในทางกลับกัน เว็บที่มีไฟล์ PHP น้อยไฟล์หรือใช้ Page Cache เต็มรูปแบบอยู่แล้วอาจเห็นผลต่างเล็กน้อยกว่า

สิ่งที่ OPcache ไม่ได้เร่ง

สำคัญมากที่ต้องเข้าใจข้อจำกัด OPcache เร่งเฉพาะ การประมวลผลโค้ด PHP เท่านั้น ถ้าเว็บช้าจากสาเหตุเหล่านี้ OPcache ช่วยไม่ได้:

AsiaGB: OPcache เปิดบน Shared Hosting ทุกเครื่องทุกแพ็กเกจ

สิ่งที่ทำให้ Hosting ของ AsiaGB แตกต่างจากผู้ให้บริการบางเจ้าคือ AsiaGB เปิด PHP OPcache บน Shared Hosting ทุกเครื่องโดยไม่มีข้อแม้ ทั้งแพ็กเกจราคาต้นจนถึงแพ็กเกจสูงสุด เซิร์ฟเวอร์ทุกตัวที่รัน Shared Hosting ของ AsiaGB ได้ถูกตั้งค่า OPcache ไว้ที่ระดับ System ล่วงหน้าแล้ว

เหตุผลที่ AsiaGB ตัดสินใจเปิด OPcache ทุกเครื่องไม่ใช่แค่เพราะมีประโยชน์กับลูกค้า แต่เพราะ OPcache ช่วยลดภาระ CPU ของเซิร์ฟเวอร์โดยรวมด้วย ซึ่งหมายความว่าทุกเว็บบนเซิร์ฟเวอร์เดียวกันได้ทรัพยากรที่ดีขึ้น เป็น Win-Win ทั้งฝั่งลูกค้าและฝั่งเซิร์ฟเวอร์

สำหรับลูกค้า AsiaGB: คุณได้ OPcache ทันทีตั้งแต่วันแรกที่ซื้อ Hosting โดยไม่ต้องตั้งค่าใดเพิ่มเติม เว็บ WordPress, Laravel, CodeIgniter หรือ PHP ทุกชนิดของคุณใช้ OPcache อยู่แล้ว คุณสามารถปรับแต่งค่า OPcache เพิ่มเติมได้เองผ่านหน้า DirectAdmin ถ้าต้องการ

ค่า OPcache ที่ AsiaGB ตั้งไว้ระดับ System

AsiaGB ตั้งค่า OPcache หลักในระดับ System ให้เหมาะสมกับสภาพแวดล้อม Shared Hosting โดยรวม ลูกค้าสามารถ Override ค่าบางส่วนผ่าน user.ini หรือหน้า PHP Options ใน DirectAdmin ได้เพิ่มเติม ค่าที่แนะนำสำหรับการ Override:

วิธีตรวจสอบว่า OPcache ทำงานบนเว็บของคุณ

แม้ AsiaGB เปิด OPcache ไว้แล้ว แต่คุณควรตรวจยืนยันเองเพื่อความมั่นใจ มีหลายวิธี:

วิธีที่ 1: ใช้ phpinfo()

สร้างไฟล์ info.php ที่ public folder ของเว็บ:

<?php phpinfo();

เปิดดูในเบราว์เซอร์แล้วกด Ctrl+F ค้นหา "Zend OPcache" ถ้าพบส่วนนี้และ opcache.enable เป็น On แสดงว่า OPcache ทำงานอยู่ ดูค่า "Cached scripts" เพิ่มเติมเพื่อให้รู้ว่ามีไฟล์ถูก Cache แล้วกี่ไฟล์

สำคัญ: หลังตรวจแล้วต้องลบไฟล์ info.php ทิ้งทันที เพราะไฟล์นี้เปิดเผยข้อมูลเซิร์ฟเวอร์และการตั้งค่า PHP ที่อาจถูกใช้โดยผู้ไม่หวังดี

วิธีที่ 2: ตรวจจาก PHP Code

สร้างไฟล์ตรวจสอบแบบสั้นๆ แล้วลบทิ้งหลังใช้:

<?php
if (function_exists('opcache_get_status')) {
    $status = opcache_get_status();
    echo "OPcache enabled: " . ($status['opcache_enabled'] ? 'YES' : 'NO') . "\n";
    echo "Cached scripts: " . $status['opcache_statistics']['num_cached_scripts'] . "\n";
    echo "Memory used: " . round($status['memory_usage']['used_memory'] / 1024 / 1024, 2) . " MB\n";
    echo "Memory free: " . round($status['memory_usage']['free_memory'] / 1024 / 1024, 2) . " MB\n";
} else {
    echo "OPcache not available";
}

วิธีที่ 3: ใช้ Plugin WordPress

สำหรับเว็บ WordPress ปลั๊กอิน LiteSpeed Cache, W3 Total Cache หรือ Query Monitor มักแสดงสถานะ OPcache ในหน้า Dashboard พร้อมปุ่ม Flush Cache ที่สะดวก ไม่ต้องเขียนโค้ดเอง

วิธีที่ 4: ตรวจผ่าน DirectAdmin

เข้า DirectAdmin › Select PHP Version › ดูรายการ Extensions ถ้า opcache มีเครื่องหมายติ๊กอยู่แสดงว่าเปิดอยู่สำหรับ PHP Version นั้น

วิธีเปิดหรือปรับ OPcache บน DirectAdmin (ถ้าต้องการ Override)

แม้ AsiaGB เปิด OPcache ระดับ System ให้แล้ว แต่ถ้าคุณต้องการปรับค่าให้เหมาะกับเว็บของตัวเองโดยเฉพาะ ทำได้ผ่าน DirectAdmin โดยไม่ต้องมีสิทธิ์ Root:

  1. เข้า DirectAdmin — ไปที่ URL ของ DirectAdmin ปกติคือ yourdomain.com:2222 แล้วล็อกอินด้วยบัญชีของคุณ
  2. เลือก PHP Version — หาเมนู Select PHP Version หรือ PHP Selector ในส่วน Advanced Features หรือ Extra Features
  3. ตรวจสอบ Extensions — ในรายการ Extensions ให้ดูว่า opcache มีติ๊กอยู่ ถ้าไม่มีให้ติ๊กเปิดแล้วกด Save (แต่สำหรับ AsiaGB ปกติเปิดไว้แล้ว)
  4. เข้า PHP Options/Settings — คลิกที่ Options หรือ PHP Settings เพื่อปรับค่า ini ที่ต้องการ Override
  5. บันทึก — คลิก Apply/Save ค่าจะมีผลทันทีสำหรับ Request ใหม่ที่เข้ามา

ทางเลือก: ใช้ไฟล์ .user.ini — สร้างไฟล์ .user.ini ในโฟลเดอร์หลักของเว็บ (public_html) แล้วใส่ค่า opcache ที่ต้องการ Override ได้เลย ไม่ต้องเข้า DirectAdmin ทุกครั้ง ค่าจะมีผลภายในเวลาไม่เกิน 5 นาที (ตามค่า user_ini.cache_ttl)

ค่า OPcache ที่แนะนำสำหรับแต่ละกรณีใช้งาน

ค่าที่เหมาะสมต่างกันตามลักษณะเว็บ ด้านล่างคือค่าแนะนำตามประเภทการใช้งาน:

เว็บทั่วไป / WordPress (แนะนำสำหรับส่วนใหญ่)

opcache.enable=1
opcache.memory_consumption=128
opcache.max_accelerated_files=10000
opcache.revalidate_freq=60
opcache.validate_timestamps=1
opcache.interned_strings_buffer=16
opcache.fast_shutdown=1

WordPress + WooCommerce หรือ Site ขนาดใหญ่

opcache.enable=1
opcache.memory_consumption=256
opcache.max_accelerated_files=20000
opcache.revalidate_freq=120
opcache.validate_timestamps=1
opcache.interned_strings_buffer=32
opcache.max_wasted_percentage=5

Laravel / Symfony (Production ที่นิ่งแล้ว)

opcache.enable=1
opcache.memory_consumption=256
opcache.max_accelerated_files=20000
opcache.revalidate_freq=0
opcache.validate_timestamps=0
opcache.interned_strings_buffer=32
opcache.save_comments=1

สำคัญ: ค่า validate_timestamps=0 และ revalidate_freq=0 หมายความว่า OPcache จะไม่ตรวจว่าไฟล์เปลี่ยนหรือไม่เลย ต้อง Clear Cache ด้วยตัวเองทุกครั้งหลัง Deploy เช่น รัน php artisan opcache:clear หรือ opcache_reset()

ค่า iniความหมายคำแนะนำ
opcache.enableเปิด/ปิด OPcache1 เสมอบน Production
memory_consumptionRAM (MB) สำหรับเก็บ Opcode Cache128 ทั่วไป, 256 สำหรับ WooCommerce/Laravel
max_accelerated_filesจำนวนไฟล์สูงสุดที่ Cache ได้10000 ทั่วไป, เพิ่มถ้ามีปลั๊กอินเยอะ
revalidate_freqทุกกี่วินาทีเช็กว่าไฟล์เปลี่ยน60 ระหว่างพัฒนา, 0 บน Production นิ่ง
validate_timestampsเช็ก Timestamp ไฟล์ทุก Request หรือไม่1 ระหว่างพัฒนา, 0 บน Production นิ่ง
interned_strings_bufferRAM (MB) สำหรับ String ที่ซ้ำกันใน Code16 ทั่วไป, 32 สำหรับเว็บใหญ่
max_wasted_percentage% ที่ยอมให้ Memory ตกค้างก่อน Restart5 (ค่าเริ่มต้น)
save_commentsเก็บ Comment ใน Code ไว้ใน Cache หรือไม่1 ถ้าใช้ Doctrine Annotations / PHP 8 Attributes
fast_shutdownปิด Process เร็วขึ้นโดยปล่อย Memory คืนเป็น Block1 บน PHP 7.x (PHP 8.x เปิดอัตโนมัติ)

OPcache JIT: ก้าวต่อไปใน PHP 8.0+

PHP 8.0 เพิ่มฟีเจอร์ใหม่ที่ทำงานควบคู่กับ OPcache ชื่อว่า JIT (Just-In-Time Compiler) ความแตกต่างระหว่าง OPcache ปกติและ OPcache+JIT คือ:

การตั้งค่า JIT ใน PHP 8.x ทำผ่าน OPcache:

opcache.jit=on
opcache.jit_buffer_size=64M

JIT เหมาะกับงานที่ใช้ CPU เข้มข้น เช่น Image Processing, Math-Heavy Computation, หรืองาน CLI แต่สำหรับเว็บ CRUD ทั่วไปที่คอขวดอยู่ที่ Database มักไม่เห็นผลต่างชัดเจน PHP Documentation แนะนำให้ทดสอบในสภาพแวดล้อมจริงก่อนเปิด JIT บน Production

หมายเหตุ JIT: AsiaGB รองรับ PHP 8.0–8.3 บน Shared Hosting ทุกแพ็กเกจ ลูกค้าสามารถสลับ PHP Version และเปิด JIT ผ่าน DirectAdmin ได้เอง ทีม Support พร้อมช่วยปรับค่าหากต้องการ

เมื่อไหร่ควรล้าง OPcache Cache

OPcache เก็บ Opcode ไว้จนกว่าจะถึงเงื่อนไขบางอย่าง ต้องทราบว่าควรล้าง Cache เมื่อไหร่:

กรณีที่ต้องล้าง Cache ทันที

วิธีล้าง OPcache

วิธีคำสั่ง / ขั้นตอนเหมาะกับ
PHP Functionopcache_reset();เรียกจาก Script ที่ Authentication แล้ว
WordPress PluginLiteSpeed Cache › Flush OPcacheUser ที่ไม่ถนัดโค้ด
SSHphp -r "opcache_reset();"Developer ที่มี SSH Access
Restart PHP-FPMDirectAdmin › Restart Servicesกรณี Emergency หรือ Full Reset
อัตโนมัติตั้ง revalidate_freq=60 + validate_timestamps=1เว็บที่อัปเดตบ่อยและยอมรับ Lag 60 วินาที

การ Monitor สถานะ OPcache

บน Production ควรติดตาม OPcache ว่าทำงานได้ดีอยู่หรือเปล่า โดยเฉพาะ 2 ค่าสำคัญ:

1. OPcache Memory Usage

ถ้า Memory ที่ใช้เกิน 80% ของที่จัดสรรไว้ (memory_consumption) OPcache จะเริ่มล้างไฟล์เก่าออกบ่อยขึ้น ทำให้ต้องคอมไพล์ใหม่บ่อย ลดประสิทธิภาพลง แก้โดยเพิ่ม memory_consumption หรือลด max_accelerated_files

2. Cache Hit Rate

ตรวจจาก opcache_get_status() ดูค่า opcache_hit_rate — ถ้าต่ำกว่า 90% แสดงว่ามีไฟล์ถูก Evict ออกบ่อยเกินไป ควรเพิ่ม Memory หรือเพิ่ม max_accelerated_files

<?php
$status = opcache_get_status();
$stats = $status['opcache_statistics'];
$hitRate = round($stats['opcache_hit_rate'], 2);
$usedMB = round($status['memory_usage']['used_memory'] / 1024 / 1024, 2);
$freeMB = round($status['memory_usage']['free_memory'] / 1024 / 1024, 2);

echo "Hit Rate: {$hitRate}%\n";
echo "Memory Used: {$usedMB} MB / Free: {$freeMB} MB\n";
echo "Cached Scripts: {$stats['num_cached_scripts']}\n";

OPcache เทียบกับ Cache ชั้นอื่น: ทำงานคนละชั้น ไม่ใช่คู่แข่ง

หลายคนสับสนว่า OPcache แทนที่ Cache ประเภทอื่นได้หรือเปล่า คำตอบคือไม่ได้ แต่ละชนิดทำงานคนละชั้นและเสริมกัน:

ประเภท Cacheแคชอะไรเร็วขึ้นที่ไหนตัวอย่าง
OPcacheOpcode PHP ที่คอมไพล์แล้วPHP Execution SpeedZend OPcache (Built-in)
Object Cacheผลลัพธ์ Query DB / API CallsDatabase Round-tripsRedis, Memcached
Page CacheHTML สำเร็จรูปทั้งหน้าข้าม PHP ทั้งหมด (เร็วที่สุด)LiteSpeed Cache, W3 Total Cache
CDN / Edge CacheStatic Files (CSS/JS/Image)ลด Latency ด้วย Edge Node ใกล้ UserCloudflare, BunnyCDN
Browser Cacheไฟล์ Static บน Clientไม่ต้อง Download ซ้ำCache-Control Headers

Stack ที่ดีที่สุดสำหรับ WordPress Performance คือ OPcache + Object Cache (Redis) + Page Cache (LiteSpeed Cache หรือ W3TC) + CDN ทำงานพร้อมกัน OPcache เป็นชั้นแรกที่ควรมีเสมอเพราะฟรีและไม่ซับซ้อน

การแก้ปัญหาที่พบบ่อยกับ OPcache

ปัญหา: แก้ไขโค้ดแล้วเว็บไม่เปลี่ยน

สาเหตุ: OPcache ยังเสิร์ฟ Opcode เก่า แก้โดยล้าง Cache ด้วย opcache_reset() หรือรอจน revalidate_freq ครบรอบ ถ้าพบบ่อยให้เพิ่ม validate_timestamps=1 ระหว่างพัฒนา

ปัญหา: เว็บช้าลงหลังเปิด OPcache

ไม่ค่อยเกิด แต่อาจเกิดเมื่อ memory_consumption น้อยเกินไปจนมีการ Evict ถี่เกินไป ตรวจ Hit Rate ถ้าต่ำกว่า 90% ให้เพิ่ม Memory

ปัญหา: Error "Cannot allocate memory" ใน OPcache

หมายความว่า OPcache Memory เต็ม แก้โดยเพิ่ม memory_consumption หรือลด max_accelerated_files หรือ Flush Cache เพื่อเริ่มใหม่

ปัญหา: Session ค้าง / Login Logout ผิดปกติ

ไม่เกี่ยวกับ OPcache โดยตรง เพราะ OPcache เก็บแค่ Static Code ไม่ใช่ Data Runtime อาจเป็นปัญหา Session Configuration หรือ Object Cache

ปัญหา: Doctrine Annotations ไม่ทำงาน

ต้องตั้ง opcache.save_comments=1 (ค่าเริ่มต้นเปิดอยู่แล้ว) Doctrine และ Framework ที่ใช้ Annotations/Attributes ต้องการให้ Comment ใน Code ถูกเก็บไว้ใน Cache

OPcache บน PHP 7 vs PHP 8: ความแตกต่างที่ควรรู้

หากคุณยังใช้ PHP 7.x อยู่ ควรรู้ความแตกต่างนี้:

คุณสมบัติPHP 7.4PHP 8.0+
OPcache พื้นฐานใช่ ครบฟีเจอร์ใช่ ครบฟีเจอร์
JIT Compilerไม่มีมี (opcache.jit)
Preloadingใช่ (opcache.preload)ใช่ ปรับปรุงแล้ว
fast_shutdownต้องตั้งเอง (=1)เปิดอัตโนมัติ
Named Arguments Support—Cache-safe

AsiaGB รองรับ PHP 7.4, 8.0, 8.1, 8.2 และ 8.3 บน Shared Hosting แนะนำ PHP 8.1 หรือสูงกว่า เพราะทั้ง Performance, Security Support และ OPcache ที่ดีขึ้น

OPcache Preloading: เร็วกว่าปกติด้วยการ Preload ไฟล์

PHP 7.4 ขึ้นไปมีฟีเจอร์ Preloading ที่ช่วยให้ Load ไฟล์ PHP เข้า OPcache ก่อนที่จะมี Request เข้ามาแม้แต่ครั้งแรก ทำให้ Request แรกก็ไม่ต้อง Compile แล้ว สั่งผ่านค่า:

opcache.preload=/path/to/preload-script.php
opcache.preload_user=www-data

สำหรับ Laravel มี Package laravel/octane และ composer/pcre ที่ใช้ประโยชน์จาก Preloading ได้ดี อย่างไรก็ตาม Preloading ต้องการสิทธิ์ระดับ System ส่วนบน Shared Hosting ของ AsiaGB ทีม Support สามารถช่วยปรึกษาได้ถ้าต้องการเปิดใช้

คำถามที่พบบ่อย (FAQ)

AsiaGB เปิด OPcache ให้อัตโนมัติหรือต้องเปิดเอง

AsiaGB เปิด PHP OPcache ไว้บน Shared Hosting ทุกเครื่องโดยค่าเริ่มต้น ลูกค้าไม่ต้องเปิดเองหรือจ่ายเพิ่ม เพียงแค่เปิดเว็บก็ได้รับประโยชน์จาก OPcache ทันที อย่างไรก็ตามสามารถปรับแต่งค่าเพิ่มเติมได้เองผ่าน DirectAdmin

OPcache เปิดแล้วต้องทำอะไรเพิ่มไหม

โดยปกติเปิดแล้วทำงานทันทีไม่ต้องแก้โค้ด แต่ควรตรวจด้วย phpinfo() ว่า Zend OPcache แสดงสถานะ On และหากตั้ง validate_timestamps=0 ต้องสั่ง Reset OPcache ทุกครั้งหลังอัปเดตโค้ดเพื่อไม่ให้เว็บรันโค้ดเก่าค้าง

OPcache กับ Redis ต่างกันอย่างไร

OPcache แคชโค้ด PHP ที่คอมไพล์แล้วเพื่อเร่งการประมวลผลภาษา ส่วน Redis เป็น Object Cache ที่เก็บผลลัพธ์ Query ฐานข้อมูลเพื่อลดภาระ MySQL ทั้งสองทำงานคนละชั้นและใช้ร่วมกันได้ ไม่ใช่ตัวแทนกัน

เปิด OPcache แล้วเว็บยังช้าอยู่ เพราะอะไร

เพราะ OPcache เร่งเฉพาะการประมวลผลโค้ด PHP ถ้าเว็บช้าจาก Query ฐานข้อมูลที่ไม่มี Index การเรียก API ภายนอก หรือรูปภาพขนาดใหญ่ ต้องแก้ที่ต้นเหตุเหล่านั้นแยกต่างหาก

ต้องมีสิทธิ์ Root เพื่อเปิด OPcache ไหม

ไม่ต้อง บน DirectAdmin เปิดและปรับค่า OPcache ได้เองผ่านหน้า Select PHP Version โดยไม่ต้องมีสิทธิ์ Root หรือใช้ command line

OPcache JIT คืออะไร ต่างจาก OPcache ปกติไหม

JIT (Just-In-Time Compiler) เป็นคุณสมบัติของ PHP 8.0+ ที่แปลง Opcode เป็น Machine Code โดยตรง ทำให้ CPU ประมวลผลได้เร็วกว่าการตีความ Opcode ทีละบรรทัด เหมาะสำหรับงานคำนวณเข้มข้นเช่น Image Processing สำหรับเว็บ CRUD ทั่วไปอาจไม่เห็นผลต่างชัดเจน

OPcache ทำให้ใช้ RAM มากขึ้นไหม

ใช่ OPcache จองพื้นที่ RAM ตามค่า memory_consumption (ปกติ 128MB) แต่ RAM ที่ใช้ไปช่วยลด CPU และ I/O ได้มาก บน Shared Hosting AsiaGB เซิร์ฟเวอร์ออกแบบให้รองรับ OPcache ทุกเครื่องอยู่แล้ว จึงไม่ส่งผลกระทบต่อ Quota ของลูกค้า

ถ้าลูกค้าหลายคนอยู่เซิร์ฟเวอร์เดียวกัน OPcache จะแชร์กันหรือเปล่า

OPcache ทำงานในระดับ PHP Process และ Shared Memory ของ OS โดยทั่วไปไฟล์ PHP เดียวกันถ้า Path เดียวกันจะ Cache ร่วมกันได้ แต่แต่ละ User Account มีสิทธิ์ควบคุม PHP Settings ของตัวเองผ่าน .user.ini หรือ DirectAdmin และไม่สามารถเข้าถึง Opcode ของ User อื่นได้

Hosting พร้อม OPcache ทุกแพ็กเกจ บน DirectAdmin

AsiaGB เปิด PHP OPcache บน Shared Hosting ทุกเครื่อง รองรับ PHP 8.x, SSD Storage, Uptime 99% พร้อมทีมซัพพอร์ตไทยตอบได้ทุกวัน เริ่มต้น 500 บาท/ปี

ดูแพ็กเกจ Hosting