Docket Cache – شتاب‌دهنده کش شیء

توضیحات

افزونه Docket Cache یک سیستم کش شیء پایدار برای وردپرس است که داده‌های کش‌شده را به‌صورت کدهای ساده PHP ذخیره می‌کند. این افزونه به‌عنوان گزینه‌ای جایگزین برای سایت‌هایی طراحی شده است که به Redis یا Memcached دسترسی ندارند.

بیشتر افزونه‌های کش مبتنی بر پرونده از توابع serialize و unserialize برای ذخیره اشیاء PHP در پرونده‌های متنی ساده استفاده می‌کنند. اما Docket Cache روش متفاوتی را در پیش گرفته و اشیاء را به کدهای ساده PHP تبدیل می‌کند. این کار بازیابی داده‌ها را سریع‌تر کرده و کارایی کلی سیستم را بهبود می‌بخشد، به‌ویژه زمانی که Zend OPcache فعال باشد.

For more information, please refer to the documentation on Caching In WordPress.

چرا از این افزونه استفاده کنیم؟

برای داشتن یک کش شیء پایدار و مطمئن در وردپرس، Redis یا Memcached بهترین گزینه‌ها هستند. با این حال، راه‌اندازی آن‌ها نیاز به دانش مدیریت سرور دارد و به‌ندرت روی هاست‌های اشتراکی یا ارزان‌قیمت در دسترس هستند.

یک روش جایگزین، ذخیره کش شیء در پرونده‌ها است. در وردپرس، صادر کردن اشیاء PHP کار ساده‌ای نیست. اکثر افزونه‌های کش مبتنی بر پرونده برای ذخیره و بازیابی اطلاعات به سریال‌سازی (serialising) و سریال‌زدایی (unserialising) اشیاء وابسته هستند.

افزونه Docket Cache با تبدیل کش شیء به کدهای ساده PHP، روش بهتری را دنبال می‌کند. این فرآیند بسیار سریع‌تر است زیرا وردپرس می‌تواند بدون پردازش‌های اضافی، مستقیماً از اطلاعات کش استفاده کند.

ویژگی‌ها

  • کش شیء + OPcache
  • کش پیشرفته نوشته
  • پیش‌کش کش شیء
  • کش فهرست وردپرس
  • کش ترجمه وردپرس
  • بهینه‌سازی پرس‌وجوهای هسته وردپرس
  • بهینه‌سازی پرس‌وجوهای شمارش اصطلاحات
  • بهینه‌سازی شمارش نوشته‌ها، برگه ها و دیدگاه‌ها
  • بهینه‌سازی جدول‌های پایگاه‌داده
  • بهینه‌سازی ووکامرس
  • تعلیق بارگذاری خودکار گزینه‌های وردپرس
  • بهینه‌سازی‌های زمان‌بندی از دست رفته نوشته
  • کش شیء + آمار OPcache + نمایشگر OPcache
  • گزارش کش
  • سرویس Cronbot
  • پشتیبانی از WP-CLI
  • پشتیبانی از چندسایته / چندشبکه‌ای

پیش‌نیازها

حداقل پیش‌نیازها برای استفاده از Docket Cache:

  • PHP 7.2.5
  • وردپرس ۵.۴

We also recommend:

  • Zend OPcache

Docket Cache saves the cache as PHP files, so it works with or without OPcache. With OPcache, PHP keeps those files ready in memory and does not have to read them from disk on every page load, which makes the cache much faster.

مستندات

For configuration options, installation guides, and command-line usage, please refer to the مستندات.

توسعه

  • مخزن گیت‌هاب — کد منبع و مرکز توسعه افزونه Docket Cache.
  • تغییرات اخیر — تاریخچه کامل تغییرات، رفع خطاها و بهبودها.
  • Gapo Tunnel — انتشار سرویس‌های محلی روی اینترنت از طریق تونل‌های امن. کاربردی برای آزمایش Docket Cache در محیط‌های توسعه محلی (لوکال‌هاست).
  • WP Staging Desktop — Turn a live WordPress site into a local development environment in minutes.

حمایت مالی از این پروژه

Support the ongoing development of Docket Cache with a one-off or recurring contribution.

حامیان مالی برجسته:

با تشکر و قدردانی صمیمانه.

سایر حامیان مالی در لیست افتخارات ذکر شده‌اند.

عکس‌های صفحه

نصب

افزونه Docket Cache برای ارائه بهترین کارایی به PHP نسخه 7.2.5 یا بالاتر، وردپرس 5.4 یا بالاتر و Zend OPcache نیاز دارد.

  1. در پیشخوان وردپرس، به بخش افزونه‌ها <- افزودن تازه بروید.
  2. عبارت “Docket Cache” را جستجو کرده و روی هم‌اکنون نصب کن کلیک کنید.
  3. روی فعال‌سازی یا فعال‌سازی در شبکه (برای حالت چندسایته) کلیک کنید.
  4. برای ورود به صفحه تنظیمات، روی Docket Cache در منوی سمت راست کلیک کنید.

لطفاً چند ثانیه زمان دهید تا فرآیند کش کردن اشیاء توسط Docket Cache آغاز شود.

سوالات متداول

کش شیء (Object Caching) در وردپرس چیست؟

کش شیء نتایج پرس‌وجوهای پایگاه‌داده را ذخیره می‌کند تا در دفعات بعدی که به آن‌ها نیاز است، با سرعت بالا بازیابی شوند.

داده‌های کش‌شده مستقیماً از حافظه کش خوانده می‌شوند، به‌جای اینکه پرس‌وجوهای مکرر به پایگاه‌داده فرستاده شوند. این کار بار روی سرور شما را کاهش داده و سرعت سایت را بیشتر می‌کند.

به زبان ساده، کش کردن اشیاء داده‌های پرکاربرد را در مکانی نگهداری می‌کند که دسترسی به آن‌ها با سرعت بیشتری امکان‌پذیر باشد.

نقش Docket Cache در کش کردن اشیاء چیست؟

به‌طور پیش‌فرض، کش شیء وردپرس غیرپایدار است. این یعنی داده‌های کش‌شده فقط برای مدت‌زمان یک درخواست صفحه در حافظه موقت نگهداری می‌شوند و پس از بارگذاری کامل صفحه از بین می‌روند. برای پایدار کردن آن، کش شیء باید روی دیسک ذخیره شود.

افزونه Docket Cache کاری فراتر از ذخیره ساده کش شیء انجام می‌دهد — این افزونه داده‌های کش‌شده را به کدهای ساده PHP تبدیل می‌کند. این کار سرعت را بالا می‌برد زیرا وردپرس می‌تواند بدون پردازش‌های اضافی، مستقیماً از کش استفاده کند.

ابزار OPcache در Docket Cache چیست؟

ابزار OPcache یک موتور کش داخلی در PHP است. این موتور با ذخیره‌سازی بایت‌کد پیش‌کامپایل‌شده اسکریپت‌ها در حافظه مشترک، کارایی سیستم را ارتقا می‌دهد تا PHP مجبور نباشد در هر درخواست، اسکریپت‌ها را مجددا بارگذاری و تجزیه کند.

افزونه Docket Cache کش شیء را به کدهای ساده PHP تبدیل می‌کند. در هنگام خواندن و نوشتن داده‌های کش، مستقیماً از OPcache استفاده می‌کند که این کار موجب بازیابی سریع‌تر داده‌ها و عملکرد بهتر می‌شود.

سرویس Cronbot در Docket Cache چیست؟

سرویس Cronbot یک سیستم خارجی است که هر ساعت وب‌سایت شما را پینگ می‌کند تا Cron وردپرس را فعال و در حال اجرا نگه دارد.

این سرویس اختیاری است و الزامی به استفاده از آن نیست. به‌طور پیش‌فرض، این سرویس به سرور مقصد متصل نیست. می‌توانید آن را کاملاً در صفحه پیکربندی غیرفعال کنید.

سیستم جمع‌آوری زباله (Garbage Collector) در Docket Cache چیست؟

سیستم جمع‌آوری زباله (Garbage Collector) یک رویداد زمان‌بندی‌شده است که هر ۵ دقیقه یک‌بار اجرا می‌شود تا پرونده‌های کش را نظارت کرده، موارد منقضی‌شده را پاک‌سازی و آمار را جمع‌آوری کند.

دیسک رم (RAM disk) در Docket Cache چیست؟

دیسک رم از حافظه موقت سرور (RAM) شما برای شبیه‌سازی یک درایو ذخیره‌سازی استفاده می‌کند. این درایو می‌تواند یک قطعه سخت‌افزاری یا یک دیسک مجازی باشد.

خواندن و نوشتن داده‌ها روی رم (RAM) بسیار سریع‌تر از SSD است. ذخیره پرونده‌های Docket Cache روی دیسک رم می‌تواند کارایی را به شدت افزایش دهد.

لطفاً توجه داشته باشید که ایجاد یک دیسک رم نیاز به دسترسی مدیر سرور (root) دارد، بنابراین این گزینه در میزبانی‌های اشتراکی در دسترس نیست.

در اینجا یک نمونه دستور برای ساخت و استفاده از دیسک رم با Docket Cache آورده شده است:

$ cd wp-content/
$ sudo mount -t tmpfs -o size=500m tmpfs ./cache/docket-cache

برای سوار کردن (mount) خودکار مسیر کش هنگام بوت شدن سرور، پرونده /etc/fstab خود را به‌روزرسانی کنید.

برای اطلاعات بیشتر درباره دیسک‌های رم (RAM disks):

  1. چگونه به‌راحتی یک دیسک رم بسازیم
  2. پوشه /dev/shm چیست و کاربرد عملی آن چیست؟
  3. ایجاد سیستم پرونده در رم (RAM)

On Windows, create a RAM disk and set the DOCKET_CACHE_PATH to point to the RAM disk drive.

حداقل رم مورد نیاز برای هاست اشتراکی چقدر است؟

به‌طور پیش‌فرض، وردپرس محدودیت حافظه را روی ۲۵۶ مگابایت تنظیم می‌کند. در ترکیب با MySQL و وب‌سرور، به بیش از ۲۵۶ مگابایت فضا نیاز خواهید داشت. اگر پلن میزبانی شما در مجموع فقط ۲۵۶ مگابایت حافظه ارائه می‌دهد، این مقدار کافی نیست و Docket Cache نمی‌تواند کارایی سایت شما را بهبود بخشد.

تفاوت Docket Cache با دیگر افزونه‌های کش شیء در چیست؟

افزونه Docket Cache یک شتاب‌دهنده کش شیء است. این افزونه با مدیریت پرس‌وجوهای نوشته، شمارش دیدگاه‌ها، ترجمه‌های وردپرس و موارد دیگر، فرآیند کش کردن را پیش از ذخیره کش شیء بهینه‌سازی می‌کند.

آیا می‌توانم از آن در کنار سایر افزونه‌های کش استفاده کنم؟

هم بله و هم خیر. شما می‌توانید از آن در کنار یک افزونه کش صفحه استفاده کنید، اما امکان استفاده هم‌زمان از آن با یک افزونه کش شیء دیگر وجود ندارد.

آیا می‌توانم از آن همراه با لایت‌اسپید کش استفاده کنم؟

بله. افزونه لایت‌اسپید کش (LiteSpeed Cache) شامل قابلیت کش شیء اختصاصی خود است. ممکن است با دیدن پیامی از شما خواسته شود Docket Cache را غیرفعال کنید. کافی است بخش کش شیء را در تنظیمات لایت‌اسپید کش خاموش کنید تا بتوانید از Docket Cache استفاده کنید.

آیا می‌توانم از Docket Cache در یک فروشگاه ووکامرسی پربازدید استفاده کنم؟

استفاده از آن برای فروشگاه‌های ووکامرسی پربازدید توصیه نمی‌شود. افزونه Docket Cache به‌عنوان یک جایگزین مبتنی بر پرونده برای کش‌های درون‌حافظه‌ای (in-memory) مانند Redis و Memcached طراحی شده است و ممکن است پاسخگوی نیازهای یک فروشگاه شلوغ نباشد. برای سایت‌های ووکامرسی با ترافیک بالا، توصیه می‌کنیم به‌جای آن از Redis استفاده کنید.

من یک سرور مجازی (VPS) دارم. آیا می‌توانم به‌جای Redis از Docket Cache استفاده کنم؟

می‌توانید این کار را انجام دهید، اما اگر سرور مجازی (VPS) شما از Redis پشتیبانی می‌کند، توصیه می‌کنیم برای کارایی بهتر از Redis استفاده کنید. افزونه Docket Cache برای محیط‌هایی که Redis یا Memcached در دسترس نیستند، مناسب‌تر است. با این حال، برای سایت‌های کوچک تا متوسط روی سرور مجازی، بدون نیاز به ارتباط شبکه و بدون ریسک تداخل کلیدهای کش (cache-key)، بسیار عالی عمل می‌کند.

نقد و بررسی‌ها

6 مارس 2026 1 پاسخ
After installing this plugin I saw significant speed increases on page loading times. I've used it in combination with other page and browser cache plugins and have had no conflicts.
29 سپتامبر 2025 1 پاسخ
Docket Cache hat meine Seiten mit Elementor Pro, LearnPress und PMP deutlich schneller gemacht. Die Datenbankzeit ging praktisch auf null, die Anzahl der Queries wurde stark reduziert, und das Backend fühlt sich viel reaktionsschneller an. Einfach zu installieren, leicht zu konfigurieren und perfekt kompatibel mit WP Rocket und WP Optimize. Absolute Empfehlung!
26 سپتامبر 2025
Works flawless, really simple way to test object cache locally when developing, without needing to setup memchache or redis or similar.
خواندن تمامی 50 نقد و بررسی‌

توسعه دهندگان و همکاران

“Docket Cache – شتاب‌دهنده کش شیء” نرم افزار متن باز است. افراد زیر در این افزونه مشارکت کرده‌اند.

مشارکت کنندگان

“Docket Cache – شتاب‌دهنده کش شیء” به 6 زبان ترجمه شده است. با تشکر از مترجمین برای همکاری و کمک‌هایشان.

ترجمه “Docket Cache – شتاب‌دهنده کش شیء” به زبان شما.

علاقه‌ مند به توسعه هستید؟

کد را مرور کنید، مخزن SVN را بررسی کنید، یا از طریق RSS در گزارش توسعه مشترک شوید.

گزارش تغییرات

26.04.11

  • Fixed: Becache::export_transient() -> Transients were returned as serialized strings instead of their original value.
  • Fixed: Becache::export_transient() -> Transient value could be replaced by its timeout, and expired transients were cached.
  • Fixed: Becache::store_cache() -> Exported transients now keep their own expiry instead of always using the maximum TTL.
  • Fixed: WP_Object_Cache::dc_update() -> Reset the stored type when incr/decr writes a new value.
  • Improved: Becache -> Store array and stdClass transients as native PHP, other classes are unserialized on read.
  • Improved: WP_Object_Cache -> Bump on-disk cache format version to evict transient cache files written by 26.04.10.

26.04.10

  • Fixed: WP_Object_Cache::dc_get()/dc_save() -> Return cached strings exactly as stored to prevent PHP object injection from serialized-looking values.
  • Fixed: WP_Object_Cache::dc_get() -> Verify the stored key and group before serving a cached value.
  • Fixed: CliOpcache -> Store the WP-CLI OPcache shared secret in a PHP file instead of a web-readable lock file.
  • Fixed: Plugin::flush_fcache() -> Validate the cache file index to prevent path traversal.
  • Fixed: ReqAction -> Move the Suspend Object Cache state change behind the nonce-verified action.
  • Fixed: View::code_focus() -> Build the admin notice via a text node and restrict the option key to prevent DOM-based XSS.
  • Fixed: WpConfig::write_runtime() -> Only write expected on/off/integer values into runtime.php.
  • Fixed: Crawler -> Only attach cookies to loopback requests, never to the remote Cronbot endpoint.
  • Fixed: CronAgent::close_ping() -> Exclude captured cron hook output from the ping response.
  • Fixed: EventList -> Escape cron event arguments and callback names in the Cronbot table.
  • Fixed: Tweaks -> Cache HTTP responses only for GET requests without Authorization or Cookie, and never cache a response that sets cookies.
  • Fixed: MenuCache -> Skip the shared menu cache for logged-in users.
  • Improved: WP_Object_Cache -> On-disk cache format version migrates pre-update cache files on read, without a manual flush.

26.04.09

  • Added: Cronbot -> Sponsor notice when the service is connected.
  • Fixed: nwdcx_cleanuptransient() -> Use prepared statements when removing transients from the database.
  • Fixed: Crawler -> Verify SSL certificate on requests to remote endpoints.
  • Fixed: ReqAction -> Escape Cronbot error message in admin notice.
  • Removed: Critical Version Checking -> No longer needed.

26.04.08

  • Fixed: WP_Object_Cache::dc_log() -> Redact query string values in the logged request URI.
  • Fixed: Constans -> Default Cache Log file name is no longer predictable.
  • Fixed: Filesystem::log_remove_legacy() -> Remove Cache Log files left under the old name.
  • Fixed: CronAgent::close_ping() -> Fatal error on rejected ping request.
  • Fixed: CronAgent::close_ping() -> Exclude Cookie and Authorization headers from stored ping data.

26.04.07

  • Fixed: Polyfill PhpToken stub -> Extend scoped Nawawi\Symfony\Polyfill\Php80\PhpToken.
  • Improved: Updated Symfony vendor libraries for PHP 8.4 compatibility.

26.04.06

  • Fixed: admin/log.php -> esc_textarea() on Cache Log output to prevent stored XSS.
  • Fixed: Plugin::dc_log() -> Sanitise REQUEST_URI caller before logging.
  • Fixed: Plugin -> Capability check on log/debug.log downloads reachable unauthenticated on ‘init’.

26.04.05

  • Fixed: Removed double echo in log.php.

26.04.04

  • اضافه شد: گزینه تنظیمات UI برای باطل‌سازی OPcache در WP-CLI (معادل ثابت DOCKET_CACHE_WPCLI_OPCACHE).
  • رفع شد: CliOpcache::notify() -> بافر کردن اعلان‌های هر پرونده هنگام خاموش شدن (shutdown) برای جلوگیری از سیل درخواست‌های HTTP در زمان Garbage Collection و حذف تکی پرونده‌های کش.
  • رفع شد: CliOpcache -> مسیر REST پیش از بررسی سازگاری ثبت می‌شود تا هنگام خروج زودهنگام پردازشگرها (workers) تحت فشار بار، خطاهای 404 اضافی حذف شوند.
  • رفع شد: CronAgent::receive_ping() -> محافظت از نوع داده (Type-safety) در ورودی‌های پینگ برای جلوگیری از خطای TypeError در PHP 8 ناشی از مقادیر آرایه‌ای.
  • رفع شد: تابع CronAgent::receive_ping() -> بازگشت صریح و مستقیم پس از اجرای close_ping() در زمان غیرفعال بودن CRONBOT.
  • رفع شد: تابع CronAgent::receive_ping() -> حلقه چندسایته خطاهای هر سایت را از طریق try/catch ایزوله می‌کند؛ گزارش خطای wpcron_error ارسال می‌شود تا سرور cronbot خرابی‌های مداوم را شناسایی کند.
  • رفع شد: تابع CronAgent::run_wpcron() -> ایجاد محافظ ورود مجدد (Re-entry guard) از طریق پرچم نمونه و ساختار try/finally.
  • رفع شد: تابع CronAgent::run_wpcron() -> اجرای تابع ob_end_clean() در مسیر بروز استثنا؛ توقف کاهش متغیر $run_event به کمتر از صفر.
  • رفع شد: تابع CronAgent::run_wpcron() -> مقداردهی اولیه متغیرهای $results و $cron_event برای جلوگیری از هشدارهای متغیر تعریف‌نشده در PHP 8.
  • رفع شد: تابع CronAgent::run_wpcron() -> بررسی REQUEST_URI از تابع urldecode() استفاده می‌کند و ابتدا wp_doing_cron() را بررسی می‌کند تا از دور زدن کدهای آدرس (URL-encoded bypass) جلوگیری شود.
  • رفع شد: تابع CronAgent::send_action() -> کلید کش اکنون شامل کنش (action) است تا از تداخل درخواست‌های خاموش/روشن از یک IP یکسان جلوگیری شود.
  • بهبود یافت: تابع CronAgent::send_action() -> ابزار کش‌شکن $stmp هر ۵ دقیقه یک‌بار تازه‌سازی می‌شود تا از کهنگی کش CDN در فرآیندهای طولانی‌مدت جلوگیری کند.
  • بهبود یافت: تابع CronAgent::check_connection() -> برای کاهش سربار هوک‌های زمان خاتمه (shutdown-hook) در نقاط پایانی پربازدید، در درخواست‌های AJAX/REST/cron نادیده گرفته می‌شود.

26.04.03

  • اضافه شد: CliOpcache — باطل‌سازی OPcache وب‌سرور از طریق WP-CLI توسط نقطه پایانی (endpoint) REST.
  • اضافه شد: ثابت DOCKET_CACHE_WPCLI_OPCACHE برای فعال/غیرفعال کردن باطل‌سازی OPcache در CLI.
  • اضافه شد: ثابت DOCKET_CACHE_CONFIGACTION برای فعال/غیرفعال کردن ویژگی صادرات/واردات تنظیمات.
  • اضافه شد: ویژگی صادرات/واردات تنظیمات برای پشتیبان‌گیری و بازیابی پیکربندی.
  • رفع شد: CliOpcache -> محافظت در برابر پیمایش مسیر (Path traversal) با استفاده از اعتبارسنجی realpath().
  • رفع شد: CliOpcache -> سرکوب پاک‌سازی گروهی (Bulk flush) برای جلوگیری از درخواست‌های HTTP بیش‌ازحد در حین پاک‌سازی کامل کش.
  • رفع شد: CliOpcache -> مقداردهی اولیه رمز مشترک (Shared secret) در زمان ثبت مسیر REST.
  • رفع شد: ReqAction -> پاک‌سازی کش شیء باعث خطای 502 در Nginx می‌شد که با موکول کردن پاک‌سازی به بعد از پاسخ (response) برطرف شد.
  • رفع شد: Plugin::get_opcache_status() -> فیلتر کردن اسکریپت‌ها بر اساس ABSPATH برای جلوگیری از شمارش سایت‌های دیگر در هاست اشتراکی.
  • رفع شد: Plugin::get_opcache_status() -> حذف بررسی غیرضروری is_file() برای تشخیص قدیمی بودن (stale) روی هر اسکریپت کش‌شده.
  • رفع شد: OPcache Viewer -> پاک‌سازی (Escape) خروجی مقادیر پیکربندی برای جلوگیری از XSS.
  • بهبود یافت: Filesystem::unlink() -> اطلاع‌رسانی به OPcache وب‌سرور هنگام حذف تکی پرونده‌های کش.
  • بهبود یافت: Filesystem::cachedir_flush() -> استفاده از کلاس Crawler برای درخواست‌های HTTP داخلی.
  • بهبود یافت: Plugin::get_opcache_status() -> پرش از ساخت آرایه اسکریپت‌ها برای صفحه مرور کلی، اعمال سقف ۵۰۰۰۰ برای OPcacheView.
  • بهبود یافت: Plugin::get_opcache_status() -> محافظ زمان پایان (Timeout guard) برای اسکن کش پرونده در هاست‌های اشتراکی.
  • بهبود یافت: OPcacheView -> حذف گزینه «همه موارد»، جایگزینی با سقف ۵۰۰۰۰ مورد.
  • بهبود یافت: OPcacheView::get_status() -> کش کردن نتیجه برای جلوگیری از اسکن دوبار در هر بارگذاری صفحه.

برای مشاهده تغییرات قبلی لطفاً به changelog.txt مراجعه کنید.

در صورت بروز خطا هنگام به‌روزرسانی، لطفاً فایل wp-content/object-cache.php و پوشه wp-content/cache/docket-cache را به‌صورت دستی حذف کنید. سپاسگزاریم.