کارآگاه بهینه‌سازی (Optimization Detective)

توضیحات

این افزونه معیارهای کاربر واقعی را درباره اینکه چه عناصری در صفحه نمایش داده می‌شوند در طیف وسیعی از دستگاه‌ها (مانند دسکتاپ، تبلت و گوشی) جمع‌آوری می‌کند تا بهینه‌سازی‌های بارگذاری را که با روش‌های اکتشافی سمت سرور فعلی وردپرس امکان‌پذیر نیستند، اعمال کند.

این افزونه یک پیش‌نیاز چارچوبی (framework dependency) است که به تنهایی عملکرد بهینه‌سازی ارائه نمی‌دهد. برای آن، لطفاً افزونه‌های وابسته Image Prioritizer و Embed Optimizer را نصب کنید (در میان موارد دیگر که از تیم عملکرد هسته وردپرس خواهند آمد). در حال حاضر هیچ تنظیماتی و هیچ رابط کاربری برای این افزونه وجود ندارد زیرا طراحی شده است تا بدون هیچ‌گونه پیکربندی کار کند.

سایت شما در حال حاضر باید دارای REST API قابل دسترسی برای بازدیدکنندگان احراز هویت نشده در بخش کاربری باشد، زیرا معیارها کاربر واقعی درباره صفحات سایت شما از این طریق جمع‌آوری می‌شوند؛ با این وجود، بررسی‌هایی برای ارائه مکانیسم‌های جایگزین جهت جمع‌آوری معیارها در حال انجام است. همچنین، لطفاً توجه داشته باشید که در حال حاضر هیچ معیاری از سافاری جمع‌آوری نمی‌شود زیرا هنوز از معیار Largest Contentful Paint پشتیبانی نمی‌کند، اما پشتیبانی از این معیار حیاتی‌های هسته وب (Core Web Vitals) امسال از طریق Interop 2025 ارائه خواهد شد.

لطفاً برای مقدمه فنی، قلاب‌های فیلتر/اکشن و افزونه‌ها (extensions) که موارد استفاده و مثال‌ها را نشان می‌دهند، به مستندات کامل افزونه مراجعه کنید. همچنین می‌توانید سخنرانی WordCamp Asia 2025 را تماشا کنید: افزایش عملکرد با کارآگاه بهینه‌سازی.

نصب

نصب از طریق مخزن در وردپرس

  1. در مدیریت وردپرس به افزونه‌ها > افزودن بروید.
  2. عبارت Optimization Detective را جستجو کنید.
  3. افزونه Optimization Detective را نصب و فعال کنید.

نصب دستی

  1. فایل ZIP افزونه را از WordPress.org دانلود کنید یا پس از دنبال کردن دستورالعمل‌های شروع به کار، یک بیلد ZIP از کلون مخزن گیت‌هاب از طریق دستور npm run build:plugin:optimization-detective --env zip=true ایجاد کنید.
  2. در مدیریت وردپرس به افزونه‌ها > افزودن افزونه تازه بروید.
  3. روی بارگذاری افزونه کلیک کنید
  4. فایل optimization-detective.zip را از سیستم خود که در مرحله ۱ دانلود کردید انتخاب کنید و روی نصب کن کلیک کنید.
  5. روی دکمه فعال‌سازی افزونه کلیک کنید.

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

کجا می‌توانم بازخورد خود را درباره افزونه ارسال کنم؟

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

کجا می‌توانم باگ‌های امنیتی را گزارش دهم؟

تیم عملکرد و جامعه وردپرس باگ‌های امنیتی را جدی می‌گیرند. ما از تلاش‌های شما برای افشای مسئولانه یافته‌هایتان قدردانی می‌کنیم و تمام تلاش خود را برای به رسمیت شناختن مشارکت‌های شما انجام خواهیم داد.

برای گزارش یک مشکل امنیتی، لطفاً از برنامه WordPress HackerOne بازدید کنید.

چگونه می‌توانم در افزونه مشارکت کنم؟

مشارکت‌ها همیشه مورد استقبال هستند! درباره نحوه مشارکت در دستورالعمل تیم عملکرد هسته بیشتر بیاموزید.

کد منبع افزونه در مخزن WordPress/performance در گیت‌هاب قرار دارد.

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

17 جولای 2025
I installed this plugin together with the image optimiser and auto size plugins and I have seen a speed increase from 67 to 99! really happy with the results and no obvious downsides so far. Keep up the good work.
26 می 2025 3 پاسخ
Really appreciate the efforts going into giving us tools for further improving performance optimization in WordPress. Love that it does it’s work without configuration. Recommendation: Add an “on install” notice that links to documentation, etc., to spare who missed the note in the description that there aren’t any settings, etc.
31 مارس 2025 2 پاسخ
Gives error: The Optimization Detective REST API endpoint is unavailable.
خواندن تمامی 3 نقد و بررسی‌

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

“کارآگاه بهینه‌سازی (Optimization Detective)” نرم افزار متن باز است. افراد زیر در این افزونه مشارکت کرده‌اند.

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

“کارآگاه بهینه‌سازی (Optimization Detective)” به 6 زبان ترجمه شده است. با تشکر از مترجمین برای همکاری و کمک‌هایشان.

ترجمه “کارآگاه بهینه‌سازی (Optimization Detective)” به زبان شما.

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

Browse the code, check out the SVN repository, or subscribe to the development log by RSS.

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

1.0.0-beta4

بهبودها

  • Add URL Metric mutation helpers to extension initialization API. (1951)
  • Add gzip compression for URL metrics using Compression Streams API. (1959)
  • Allow disabling timestamp-based freshness checks by using negative TTL values. (1940)
  • Bump web-vitals from 5.0.3 to 5.1.0. (2116)
  • Change default garbage collection TTL of od_url_metrics posts from 1 month to 3 months and add the filter to customize expiration. (1950)
  • Enhance Optimization Detective meta generator tag with all disabled reasons. (1979)
  • Amend URL metrics to the generator meta tag content. (1954)
  • Improve construction of inline scripts with sourceURL, hardened JSON encoding, and exporting JSON in separate script. (2169)
  • Improve discoverability and user guidance for Optimization Detective extensions. (2261)
  • Remove deprecated url_metrics_group_collection and class aliases and bump required OD version in Image Prioritizer. (1943)

رفع باگ‌ها

  • Avoid possible error when reading groups in debug mode. (2108)
  • Delay loading detect module until page is loaded and idle. (2017)
  • Ensure URL Metric is initially constructed with all elements prior to initializing extensions. (1968)
  • Short-circuit detection when page is opened in background tab since web-vitals.js will not report LCP. (1927)

1.0.0-beta3

بهبودها

  • اجرای اکشن‌ها قبل و بعد از پردازش یک سند توسط کارآگاه بهینه‌سازی. (1919)
  • به‌روزرسانی OD_HTML_Tag_Processor::next_tag() برای اجازه دادن به آرگومان $query و آماده‌سازی جهت رد کردن تگ‌های بسته به صورت پیش‌فرض. (1872)
  • در دسترس قرار دادن توابع ثبت وقایع برای افزونه‌های سمت کاربر و در نظر گرفتن خودکار مقدار isDebug. (1895)
  • به‌روزرسانی نقطه پایانی REST API ذخیره‌سازی معیار URL برای بازگرداندن کد وضعیت 423 Locked به جای 403 Forbidden. (1863)
  • حذف منطق تکراری بین REST API و نوع پست معیارهای URL. (1867)

رفع باگ‌ها

  • اصلاح کدگذاری URL در سرآیند پاسخ HTTP لینک. (1907)
  • رفع مشکل فراخوانی اکشن‌های به‌روزرسانی پست پس از ذخیره یک معیار URL و بازنویسی منطق نقطه پایانی REST API به کلاس. (1865)
  • رفع مشکل شناسایی غیرقابل پیش‌بینی عنصر LCP در یک گروه معیار URL. (1903)
  • مدیریت فقدان Web Crypto API در زمینه‌های غیر HTTPS هنگام تولید کلید sessionStorage از قبل ارسال شده. (1911)

1.0.0-beta2

بهبودها

  • در نظر گرفتن محدودیت ۶۴ کیلوبایتی برای ارسال داده‌های beacon. (1851)
  • افزودن شناسه پست برای پست od_url_metrics به زمینه بازدیدکننده تگ. (1847)
  • تغییر حداقل عرض ناحیه دید به صورت انحصاری (exclusive) در حالی که حداکثر عرض شامل (inclusive) باقی می‌ماند. (1839)
  • غیرفعال‌سازی قفل ذخیره‌سازی معیار URL به صورت پیش‌فرض برای مدیران. (1835)
  • گنجاندن افزونه‌های فعال در داده‌های ETag و افزایش پیش‌فرض TTL تازگی از ۱ روز به ۱ هفته. (1854)
  • الزامی کردن ETag به عنوان ویژگی معیار URL. (1824)
  • استفاده از نحوه نگارش دامنه CSS در مدیا کوئری‌ها. (1833)
  • استفاده از IFRAME برای نمایش پاسخ‌های HTML شکست درخواست‌های ذخیره‌سازی REST API در تست سلامت سایت. (1849)

رفع باگ‌ها

  • جلوگیری از وجود کاراکترهای نامعتبر در URL سرآیند Link. (1802)
  • جلوگیری از بهینه‌سازی پیش‌نمایش پست‌ها به صورت پیش‌فرض. (1848)

مستندات

  • بهبود مستندات کارآگاه بهینه‌سازی. (1782)

1.0.0-beta1

بهبودها

  • افزودن بررسی سلامت سایت برای تشخیص مسدود شدن REST API و توقف زودتر بهینه‌سازی در صورت عدم دسترسی. (1762)
  • امکان انتخاب افزونه‌ها برای استفاده از بیلد انتساب web-vitals از طریق فیلتر od_use_web_vitals_attribution_build. (1759)
  • رفع ابهام XPathها برای فرزندان BODY با ویژگی‌های id، class یا role. (1797)
  • حذف تغییر معیارهای URL بر اساس وضعیت ورود و توقف غیرفعال‌سازی بهینه‌سازی به صورت پیش‌فرض برای مدیران. (1788)
  • بهبود پوشش تست برای کارآگاه بهینه‌سازی. (1817)
  • معرفی متد OD_Tag_Visitor_Context::track_tag() به عنوان جایگزینی برای بازگرداندن true در کالبک بازدیدکننده تگ. (1821)
  • حذف شاخص گره عنصر در XPathها تا فرزندان BODY. (1790)
  • صرف‌نظر کردن از بازدید تگ‌ها در نوار مدیریت هنگام بهینه‌سازی یک صفحه. (1816)

رفع باگ‌ها

  • اطمینان از انجام بهینه‌سازی در محیط محلی wp-env و ثبت پیام‌های دیباگ در کنسول هنگام غیرفعال بودن. (1822)
  • صرف‌نظر کردن از بازدید هر تگی داخل عناصر NOSCRIPT. (1783)

مستندات

  • انتقال مستندات کارآگاه بهینه‌سازی به README.md. (1763)

0.9.0

بهبودها

  • افزودن fetchpriority=high به IMG زمانی که عنصر LCP در دسکتاپ و موبایل است و سایر گروه‌های ناحیه دید خالی هستند. (1723)
  • بهبود اشکال‌زدایی معیارهای URL ذخیره شده در کارآگاه بهینه‌سازی. (1656)
  • ادغام وضعیت صفحه در محاسبه ETag. (1722)
  • علامت‌گذاری معیارهای URL موجود به عنوان قدیمی (stale) هنگام ثبت یک بازدیدکننده تگ جدید. (1705)
  • تنظیم حالت توسعه روی «plugin» در محیط توسعه و اجازه دادن به بهینه‌سازی صفحات هنگام ورود مدیر (زمانی که در حالت توسعه افزونه باشد). (1700)
  • افزودن متدهای کمکی get_xpath_elements_map() به OD_URL_Metric_Group_Collection و OD_URL_Metric_Group، و افزودن متدهای get_all_element_max_intersection_ratios/get_element_max_intersection_ratio به OD_URL_Metric_Group. (1654)
  • افزودن متد get_breadcrumbs() به OD_HTML_Tag_Processor. (1707)
  • افزودن متدهای get_sample_size() و get_freshness_ttl() به OD_URL_Metric_Group. (1697)
  • در دسترس قرار دادن onTTFB، onFCP، onLCP، onINP و onCLS از web-vitals.js برای ماژول‌های JS افزونه از طریق آرگومان‌های توابع initialize آن‌ها. (1697)

رفع باگ‌ها

  • جلوگیری از ارسال معیار URL در صورت تغییر اندازه ناحیه دید. (1712)
  • اصلاح ساخت عبارات XPath برای پاراگراف‌های بسته شده به صورت ضمنی. (1707)

0.8.0

بهبودها

  • ارائه اسکریپت‌های فشرده‌نشده زمانی که SCRIPT_DEBUG فعال است. (1643)
  • ارتقاء web-vitals از ۴.۲.۳ به ۴.۲.۴. (1628)

رفع باگ‌ها

  • حذف پنجره زمانی تشخیص که مانع از جمع‌آوری معیارهای URL هنگام وجود کش صفحه می‌شد. (1640)
  • بازبینی استفاده از nonceها در درخواست‌های ذخیره معیار URL و مسدود کردن درخواست‌های cross-origin. (1637)
  • ارسال شناسه پست شیء مورد نظر یا اولین پست در حلقه در درخواست ذخیره‌سازی معیار URL برای زمان‌بندی اعتبارسنجی کش صفحه. (1641)
  • رفع خطاهای phpstan. (1627)

0.7.0

بهبودها

  • ارسال داده‌های معیار URL جمع‌آوری شده هنگامی که صفحه مخفی/بسته می‌شود به جای زمانی که صفحه بارگذاری شده است؛ این امکان ردیابی تغییرات چیدمان و امتیازات INP را در طول عمر صفحه فراهم می‌کند. (1373)
  • معرفی افزونه‌های سمت کلاینت در قالب ماژول‌های اسکریپت که هنگام اجرای منطق تشخیص بارگذاری می‌شوند. (1373)
  • افزودن یک اکشن od_init برای افزونه‌ها جهت بارگذاری کدهای خود. (1373)
  • معرفی کلاس OD_Element و بهبود PHP API. (1585)
  • افزودن متدهای کمکی مجموعه گروه برای دریافت اولین/آخرین گروه‌ها. (1602)

رفع باگ‌ها

  • رفع سازگاری کارآگاه بهینه‌سازی با ووکامرس هنگامی که صفحه «به زودی» ارائه می‌شود. (1565)
  • اصلاح ذخیره‌سازی معیار URL زمانی که پیوندهای یکتا ساده غیر زیبا فعال هستند. (1574)

0.6.0

بهبودها

  • امکان گسترش طرحواره معیار URL. (1492)
  • شفاف‌سازی مستندات پیرامون مقدار بازگشتی بولی (boolean) یک بازدیدکننده تگ. (1479)
  • گنجاندن UUID با هر معیار URL. (1489)
  • معرفی get_cursor_move_count() برای استفاده به جای get_seek_count() و get_next_token_count(). (1478)

رفع باگ‌ها

  • افزودن مستندات سراسری گمشده برای delete_all_posts(). (1522)
  • معرفی اعتبارسنجی نسبت ابعاد ناحیه دید برای معیارهای URL. (1494)

0.5.0

بهبودها

  • ارتقاء web-vitals از ۴.۲.۱ به ۴.۲.۲. (1386)

رفع باگ‌ها

  • غیرفعال‌سازی کارآگاه بهینه‌سازی به صورت پیش‌فرض در قالب جاسازی (embed template). (1472)
  • اطمینان از اینکه فقط اسناد HTML توسط کارآگاه بهینه‌سازی پردازش می‌شوند. (1442)
  • اطمینان از ارسال کل قالب به کالبک بافر خروجی برای پردازش توسط کارآگاه بهینه‌سازی. (1317)
  • پیاده‌سازی پشتیبانی کامل از intersectionRect/boundingClientRect، اصلاح تایپ viewportRect و مقاوم‌سازی طرحواره JSON. (1411)

0.4.1

بهبودها

رفع باگ‌ها

  • اصلاح منطق جستجو (seeking) در طول حلقه بهینه‌سازی برای جلوگیری از صدور اعلان‌های seek(). (1376)

0.4.0

بهبودها

  • اجتناب از ارسال پارامترهای موقعیتی در کارآگاه بهینه‌سازی. (1338)
  • ارسال لینک‌های پیش‌بارگذاری از طریق سرآیندهای HTTP Link علاوه بر تگ‌های LINK. (1323)

0.3.1

بهبودها

  • ثبت مجموعه گروه معیارهای URL در کنسول هنگامی که اشکال‌زدایی فعال است (WP_DEBUG برابر با true است). (1295)

رفع باگ‌ها

  • گنجاندن عناصر غیر متقاطع در معیارهای URL برای رفع بهینه‌سازی بارگذاری تنبل. (1293)

0.3.0

  • ویژگی‌های بهینه‌سازی تصویر به یک افزونه وابسته جدید به نام Image Prioritizer منتقل شده‌اند که اکنون بارگذاری تنبل تصاویر را نیز بهینه می‌کند. (1088)

0.2.0

بهبودها

  • افزودن متغیر کوئری optimization_detective_disabled برای غیرفعال‌سازی رفتار. (1193)
  • تسهیل جاسازی کارآگاه بهینه‌سازی در سایر افزونه‌ها/پوسته‌ها. (1185)
  • استفاده از ویژگی‌های PHP ۷.۲ در کارآگاه بهینه‌سازی. (1162)
  • بهبود کیفیت کلی کد با بررسی‌های دقیق‌تر تحلیل استاتیک. (775)
  • افزایش حداقل PHP مورد نیاز به ۷.۲. (1130)

رفع باگ‌ها

  • اجتناب از _doing_it_wrong() برای Server-Timing در کارآگاه بهینه‌سازی زمانی که بافر خروجی فعال نیست. (1194)
  • اطمینان از اینکه فقط پاسخ‌های HTML بهینه می‌شوند. (1189)
  • اصلاح شاخص‌های XPath تا به جای 0-based، بر پایه ۱ باشند. (1191)

0.1.1

  • استفاده از نامک افزونه برای تگ generator. (1103)
  • جلوگیری از شکستن نقشه‌های واردات (import maps) توسط تزریق اسکریپت تشخیص در پوسته‌های کلاسیک. (1084)

0.1.0

  • انتشار اولیه.