من فضلك تسجيل الدخول أو تسجيل لتفعل ذلك.
“text”>”auto”>”-1″ دير=”auto”> أداة تنزيل مرآة البرنامج المساعد لـ WordPress: وثائق المستخدم

“-1” دير=”auto”> جدول المحتويات

  1. مقدمة
  2. نظرة عامة على النظام
  3. أمثلة
  4. لقطات الشاشة
  5. مولد واجهة برمجة تطبيقات المفاتيح السرية لـ WordPress

“-1” دير=”auto”>مقدمة

في 2 أكتوبر 2024، بدأت إثبات المفهوم (POC) لتطوير حل مصمم خصيصًا لتلبية احتياجاتي المحددة. سأقوم بتحديث إثبات المفهوم هذا باستمرار أثناء تطويره بشكل أكبر. لذا شاهد هذه المساحة.

يعد WordPress Plugin Mirror Downloader نظامًا قويًا مصممًا لتنزيل مكونات WordPress الإضافية وتخزينها مؤقتًا وإدارتها بكفاءة. يعد هذا المشروع بمثابة إثبات للمفهوم الخاص بي، على أمل أن يلهم الآخرين لإنشاء حلول احتياطية خاصة بهم لـ WordPress.org، خاصة خلال فترات التوقف. إنه يعزز إمكانات الحوسبة الطرفية لـ Cloudflare (بما في ذلك CDN، والعمال، وما إلى ذلك) وتخزين الكائنات R2 S3 لتوفير حل عالي الأداء وقابل للتطوير لإدارة المكونات الإضافية.

تركز الطريقة الموضحة أدناه فقط على عكس وتنزيل الملفات المضغوطة الخاصة بمكونات WordPress الإضافية، بدلاً من عكس مستودع SVN الخاص بمكونات WordPress الإضافية بالكامل. وذلك لأن مستودعات SVN تحتوي على سجل كامل لجميع الالتزامات والإصدارات لكل مكون إضافي لـ WordPress، مما يزيد بشكل كبير من عدد الملفات وكمية البيانات التي يجب نقلها. الطريقة التي يعمل بها هذا البرنامج النصي تعني أنك لا تحتاج إلى قدر كبير من مساحة تخزين القرص المحلي، كما هو الحال مع”http://github.com/#examples”> وضع ذاكرة التخزين المؤقت فقط يسمح لك بملء مباشرة”http://github.com/#screenshots”> مجموعة تخزين الكائنات Cloudflare R2 S3، متجاوزًا الحاجة إلى التنزيلات المحلية إذا رغبت في ذلك. ومع ذلك، يتم تنفيذ التنزيلات المحلية بشكل افتراضي.

لتعبئة جميع مكونات WordPress الإضافية البالغ عددها 59,979 في وحدة تخزين الكائنات Cloudflare R2 S3، استغرقت العملية حوالي 25-30 دقيقة باستخدام”http://github.com/#screenshots”> إجراءات سير عمل GitHub الآلية. لقد قسمت قائمة المكونات الإضافية إلى 29 جزءًا، يتم التعامل مع كل منها من خلال إجراء GitHub Workflow المنفصل الذي أدى إلى تشغيل البرنامج النصي”http://github.com/#examples”> وضع ذاكرة التخزين المؤقت فقط، تعمل عبر 29 خادم VPS قائم على نظام GitHub القائم على الحوسبة مع 4 مراكز لوحدة المعالجة المركزية لكل منها. يدعم البرنامج النصي الوضع المتوازي، لذا قم بتعيينه لاستخدام 4 سلاسل عمليات لكل خادم مشغل Github، لذلك تم استخدام 29×4=116x سلاسل عمليات وحدة المعالجة المركزية لتنزيل وتعبئة مجموعات تخزين كائنات Cloudflare R2 S3 بشكل متزامن – مع حفظ ملف مضغوط للمكون الإضافي وملف المجموع الاختباري وبيانات تعريف JSON. تسمح خطة Github Pro فقط بحد أقصى 40 خادمًا متزامنًا لتشغيل Github في المرة الواحدة، لذلك على الرغم من وجود مساحة لمزيد من التسريع، إلا أنها تحتوي على حد أقصى. تم ترتيب المكونات الإضافية من الأكثر شيوعًا إلى الأقل شيوعًا، مما يسمح للتشغيل التلقائي بتحديد أولويات التحديثات للمكونات الإضافية الأكثر استخدامًا.

كان وضع ذاكرة التخزين المؤقت فقط مطلوبًا نظرًا لمساحة القرص الحرة المحدودة على مشغلات VPS المستندة إلى Azure الخاصة بـ GitHub Workflow، حيث شغلت المكونات الإضافية البالغ عددها 59,979 32 جيجابايت من المساحة واستخدمت ملفات بيانات تعريف JSON الخاصة بها 420 ميجابايت إضافية. مرتكز على”http://github.com/#cloudflare-related-costs”> تكاليف تخزين الكائنات Cloudflare R2 S3 بالنسبة لـ 33 غيغابايت من مكونات WordPress الإضافية، ستكون تكلفة مرآة WordPress الإضافية الخاصة أقل من 0.35 دولار أمريكي شهريًا على الرغم من أنه سيرتفع مع تنزيل إصدارات البرنامج الإضافي الجديدة وتخزينها، وإذا كانت حصة R2 Class A/B السخية لعملية الكتابة والقراءة الشهرية المجانية، فإن تكاليف تشغيل R2 ستكون مجانية. كانت تكاليف Cloudflare Worker استنادًا إلى مقاييس الـ 24 ساعة الماضية هي 765 ألف طلب عامل بمتوسط ​​2.1 مللي ثانية من وقت وحدة المعالجة المركزية. لذلك، مع 100 ألف طلب عامل/اليوم مجانًا، ستكون التكلفة هي في الأساس 5 دولارات شهريًا رسوم اشتراك Cloudflare Worker حيث لن يتم تطبيق المبالغ الزائدة بموجب خطة الاشتراك السخية المدفوعة بقيمة 5 دولارات أمريكية شهريًا، والتي تتضمن ما يصل إلى 10 ملايين طلب شهريًا بمتوسط ​​10 مللي ثانية لمتوسط ​​وقت وحدة المعالجة المركزية. كل شيء، سيكون 5.35 دولار أمريكي شهريًا تكاليف البدء والتي سترتفع مع زيادة عدد مكونات WordPress الإضافية واستخدام العامل كما هو موضح”http://github.com/#cloudflare-related-costs”>هنا. النطاق الترددي لـ Cloudflare CDN مجاني، لذلك لا داعي للقلق بشأن رسوم النطاق الترددي للخروج.

إذا كنت مشروعًا مفتوح المصدر، ففكر في مراجعة Cloudflare للحصول على المساعدة. قامت Cloudflare بتوسيع عروض الدعم المجانية للمشاريع مفتوحة المصدر من خلال”https://blog.cloudflare.com/expanding-our-support-for-oss-projects-with-project-alexandria/” rel=”nofollow”>مشروع كلاودفلير الإسكندرية.

نظرا”http://github.com/#cached-plugin”> سرعات تنزيل البرنامج المساعد لـ Cloudflare CDN المخزنة مؤقتًا في WordPress، والتي أظهرت سرعات تنزيل أسرع بمقدار 43 مرة وزمن وصول أقل بنسبة 82% مقارنة بتلك المقدمة من WordPress.org، فمن الجدير بالذكر أن مات مولنويج يجب أن يتولى منصب الرئيس التنفيذي لشركة Cloudflare ماثيو برينس”https://x.com/eastdakota/status/1841154152006627663?t=L0e-TL1cPhkgckxPDG6nvg&s=19″ rel=”nofollow”>عرض التبرع بسعة WordPress.org. وهذا من شأنه أن يقلل بشكل كبير من تكاليف البنية التحتية لـ WordPress.org ويعزز سرعات تنزيل الملفات. 😉

إخلاء المسؤولية: لقد كنت أحد عملاء Cloudflare منذ عام 2011 وأفضل لاعب رسمي في مجتمع Cloudflare منذ عام 2018 (غير مدفوع، على غرار برنامج Microsoft MVP)، باستخدام خطط Cloudflare المجانية، وPro، وBusiness، وEnterprise.

“-1” دير=”auto”> انعكاس SVN

قبل POC هذا، قمت بتجربة POC لنسخ SVN في”https://gist.github.com/centminmod/003654673b3c6b11e10edc9353551fd2″> https://Gist.github.com/centminmod/003654673b3c6b11e10edc9353551fd2 وبالنسبة لاختبار 53 مكونًا إضافيًا من WordPress، كان إجمالي مساحة القرص التي تعكسها حوالي 40 جيجابايت. لذلك ستحتاج إلى موارد أقل بكثير على القرص ونطاق ترددي أقل إذا ركزت فقط على الملفات المضغوطة الخاصة بمكونات WordPress الإضافية وليس على مستودع SVN بأكمله. بالمقارنة مع النسخ المتطابق أدناه للملفات المضغوطة فقط، كان حجم التشغيل الاختباري لـ 563 ملفًا مضغوطًا لتنزيل WordPress وتخزينها مؤقتًا في وحدة تخزين كائنات Cloudflare R2 S3 ~ 1.27 جيجابايت في الحجم للملفات المضغوطة وحوالي 18 ميجابايت لملفات بيانات تعريف JSON الإضافية. عمليات حسابية تقريبية لـ 563 مكونًا إضافيًا تشغل مساحة تخزين تبلغ 1.3 جيجابايت تقريبًا. لذا، بالنسبة للمكونات الإضافية التي يبلغ حجمها 103 ألف، سيكون إجمالي مساحة التخزين حوالي 238 جيجابايت، وهو ما سيتجاوز الطبقة المجانية إلى الأبد لتخزين كائنات Cloudflare R2 S3 والتي تبلغ 10 جيجابايت/شهر. لذلك ستكون هناك تكاليف تخزين إضافية – إلا إذا كنت مشروعًا مفتوح المصدر”https://blog.cloudflare.com/expanding-our-support-for-oss-projects-with-project-alexandria/” rel=”nofollow”>مشروع كلاودفلير الإسكندرية.

يمكنك أيضًا الاستفادة من Cloudflare R2 كحامل Linux FUSE المثبت عبر JuiceFS الذي يقوم بتخزين البيانات التعريفية للملف مؤقتًا للحصول على أداء أفضل ويسمح لك بتركيب Cloudflare R2 S3 في حوامل مجزأة أيضًا. اطلع على كتاباتي ومعايير Cloudflare R2 + JuiceFS”https://github.com/centminmod/centminmod-juicefs”> https://github.com/centminmod/centminmod-juicefs.

df -hT /home/juicefs_mountFilesystem        Type          Size  Used Avail Use% Mounted onJuiceFS:myjuicefs fuse.juicefs  1.0P     0  1.0P   0% /home/juicefs_mount

“-1” دير=”auto”> باستخدام مجموعة csync2.

كنت أعمل مؤخرًا على تصميمات حزمة RPM مخصصة لأحدث إصدار csync2 2.1.1 المتشعب المميز لـ AlmaLinux/Rocky Linux والتي تحتوي على تحديثات للملفات الذرية ودعم النانو ثانية وتحديثات العقدة المتوازية عبر مشغلات inotifywait نظرًا لأن csync2 2.0 قديم جدًا. يمكنني إعداد عدة عقد خادم csync2 2.1.1 لكل إعداد مع وكلاء HTTP للأمام + دوران وكيل سلاسل الوكلاء والحصول على خوادم مهيأة لاستنساخ مستودعات WordPress SVN من أي من خوادم عقدة csync2 ومزامنة التحديثات تلقائيًا مع جميع عقد csync2. سيتم توسيع نطاقه بسهولة عند إضافة خوادم عقدة csync2 جديدة إلى المجموعة، كما سيتم توسيع نطاق مجموعة وكلاء HTTP للأمام لسلاسل الوكيل أيضًا.

مستودعات WordPress SVN:

“-1” دير=”auto”> المكونات الرئيسية

  1. عامل كلاودفلير: وظيفة JavaScript بدون خادم تعمل كوسيط بين العميل (برنامج bash النصي) ومصادر البيانات (تخزين WordPress.org وCloudflare R2). يرى”https://developers.cloudflare.com/workers/” rel=”nofollow”>https://developers.cloudflare.com/workers/ و”https://developers.cloudflare.com/workers/tutorials/” rel=”nofollow”>https://developers.cloudflare.com/workers/tutorials/. وكيف يرتبط عمال Cloudflare بمنتجات Cloudflare الأخرى مثل تخزين الكائنات Cloudflare R2 S3″https://developers.cloudflare.com/workers/runtime-apis/bindings/” rel=”nofollow”> https://developers.cloudflare.com/workers/runtime-apis/bindings/.

  2. تخزين كلاودفلير R2: نظام تخزين كائن متوافق مع S3 يستخدم للتخزين المؤقت”http://github.com/#cached-plugin”> ملفات ZIP الإضافية,”http://github.com/#mirrored-plugin-checksums”> المجاميع الاختبارية لملف ZIP و”http://github.com/#mirrored-wordpress-plugin-api-end-point”> البيانات الوصفية للمكون الإضافي JSON. يحتوي تخزين الكائنات Cloudflare R2 S3 على تكاليف عرض النطاق الترددي للخروج مجانًا، لذا فأنت تدفع فقط مقابل تخزين الكائنات والقراءة/الكتابة إلى تخزين الكائنات.

  3. سكريبت باش: عميل محلي ينسق عملية تنزيل المكونات الإضافية، ويتفاعل مع WordPress API، ويتواصل مع Cloudflare Worker.

“-1” دير=”auto”> مزايا النظام

  • التخزين المؤقت الفعال: من خلال استخدام وحدة تخزين Cloudflare R2، يقلل النظام بشكل كبير من التحميل على خوادم WordPress ويحسن سرعات التنزيل للمكونات الإضافية المطلوبة بشكل متكرر. يرى”http://github.com/#cached-plugin”> معايير البرنامج المساعد Cloudflare CDN المخزنة مؤقتًا.

  • تتبع الإصدار: يحتفظ النظام بسجل محلي لإصدارات المكونات الإضافية المثبتة، مما يتيح التحديثات الانتقائية ويقلل التنزيلات غير الضرورية.

  • المعالجة الموازية: يدعم البرنامج النصي bash concu التنزيلات السريعة، مما يقلل بشكل كبير من الوقت المطلوب لتحديثات المكونات الإضافية المجمعة.

  • تسجيل شامل: التسجيل التفصيلي على مستوى البرنامج النصي Worker وbash يسهل استكشاف الأخطاء وإصلاحها وتحسين الأداء.

  • معالجة الأخطاء المتقدمة: آليات قوية لمعالجة الأخطاء في كل من البرنامج النصي Worker وbash تضمن التعافي السلس من الفشل والإبلاغ عن الأخطاء بالمعلومات.

  • الحد من المعدل: يتم تنفيذها على مستوى العمال لمنع إساءة الاستخدام وضمان الاستخدام العادل للموارد.

  • دعم الضغط: يدعم العامل ضغط gzip، مما يقلل من استخدام النطاق الترددي ويحسن سرعات التنزيل.

  • تخزين مؤقت منفصل لـ ZIP وJSON والمجاميع الاختبارية: من خلال التخزين المؤقت لملفات ZIP وبيانات تعريف JSON والمجاميع الاختبارية بشكل منفصل، يمكن للنظام التعامل بكفاءة مع التحديثات الجزئية وتقليل تكاليف التخزين.

  • وضع ذاكرة التخزين المؤقت فقط: ميزة جديدة تسمح بفحص وتحديث ذاكرة التخزين المؤقت وحاوية R2 دون تنزيل الملفات، وهي مفيدة للتخزين المؤقت الوقائي وفحوصات النظام.

  • التحقق من المجموع الاختباري: يقوم النظام الآن بجلب وتخزين المجاميع الاختبارية للمكونات الإضافية، مما يتيح التحقق من سلامة الملفات التي تم تنزيلها.

  • WordPress Plugin 1.2 API Bridge Worker: يتم إنشاء عامل إضافي لـ WordPress Plugin API Bridge باستخدام عامل Cloudflare منفصل. إنه مصمم لسد الفجوة بين إصداري WordPress Plugin API 1.0 و1.2 https://api.wordpress.org/plugins/info/1.0 مقابل https://api.wordpress.org/plugins/info/1.2. فهو يسمح للعملاء بالاستعلام عن معلومات المكونات الإضافية باستخدام تنسيق 1.2 API أثناء جلب البيانات إما من نقطة نهاية 1.0 API المتطابقة أو واجهة برمجة تطبيقات WordPress.org 1.0 الرسمية، مما يوفر المرونة والموثوقية في استرجاع البيانات. يلغي عامل الجسر هذا حاجتي إلى استضافة أي نوع من قاعدة البيانات حيث أن API 1.2 سيعتمد فقط على البيانات الوصفية API 1.0 JSON التي تم نسخها بالفعل والمخزنة في تخزين كائنات Cloudflare R2.

    curl -s -H "قبول: التطبيق/json" "https://api.mycloudflareproxy_domain.com/plugins/info/1.2/?action=plugin_information&slug=autoptimize&locale=en_US" | جي كيو -ر '[.name, .slug, .version, .download_link, .tested, .requires_php]'[  "Autoptimize",  "autoptimize",  "3.1.12",  "https://downloads.wordpress.org/plugin/autoptimize.3.1.12.zip",  "6.6.2",  "5.6"]

“-1” دير=”auto”> التكاليف ذات الصلة بـ Cloudflare

Cloudflare CDN مجاني، لذلك ستكون التكاليف فقط مرتبطة باستخدام Cloudflare Workers وتخزين الكائنات Cloudflare R2 S3 كما هو موضح أدناه.

بالنسبة لتسعير عمال Cloudflare”https://developers.cloudflare.com/workers/platform/pricing/” rel=”nofollow”> https://developers.cloudflare.com/workers/platform/pricing/.

الطبقة الطلبات¹² مدة وقت وحدة المعالجة المركزية
حر 100.000 يوميا لا توجد رسوم لمدة 10 مللي ثانية من وقت وحدة المعالجة المركزية لكل استدعاء
معيار 10 مليون متضمنة شهريا
+0.30 دولار لكل مليون إضافي
لا توجد رسوم أو حد للمدة يتم تضمين 30 مليون مللي ثانية لوحدة المعالجة المركزية شهريًا
+0.02$ لكل مليون مللي ثانية إضافية لوحدة المعالجة المركزية
بحد أقصى 30 ثانية من وقت وحدة المعالجة المركزية لكل استدعاء
بحد أقصى 15 دقيقة من وقت وحدة المعالجة المركزية لكل”https://developers.cloudflare.com/workers/configuration/cron-triggers/” rel=”nofollow”> مشغل كرون أو”https://developers.cloudflare.com/queues/configuration/javascript-apis/#consumer” rel=”nofollow”> قائمة الانتظار المستهلك استدعاء

¹ الطلبات الواردة إلى العامل لديك. Cloudflare لا يقوم بدفع فاتورة”https://developers.cloudflare.com/workers/platform/limits/#subrequests” rel=”nofollow”>الطلبات الفرعية تصنعه من عاملك. ² طلبات الأصول الثابتة مجانية وغير محدودة.

بالنسبة لتسعير Cloudflare R2″https://developers.cloudflare.com/r2/platform/pricing/” rel=”nofollow”> https://developers.cloudflare.com/r2/platform/pricing/ وآلة حاسبة في”https://r2-calculator.cloudflare.com/” rel=”nofollow”> https://r2-calculator.cloudflare.com/.

تسعير حصص خطة Cloudflare R2 المجانية وتسعير PAYGO خارج الخطة المجانية.

ميزة مجاني إلى الأبد التخزين القياسي تخزين الوصول غير المتكرر (تجريبي)
تخزين 10 جيجا / شهر 0.015 دولارًا أمريكيًا / جيجابايت في الشهر 0.01 دولار أمريكي / جيجابايت في الشهر
عمليات الفئة أ: حالة تحور 1,000,000 / شهر 4.50 دولار / مليون طلب 9.00 دولار / مليون طلب
عمليات الفئة ب: قراءة الحالة الحالية 10,000,000 / شهر 0.36 دولار / مليون طلب 0.90 دولار / مليون طلب
استرجاع البيانات (المعالجة) لا يوجد لا أحد 0.01 دولار / جيجابايت
الخروج (نقل البيانات إلى الإنترنت) لا يوجد حر حر

تحتوي الأمثلة الثلاثة الأولى أدناه على تقديرات كتابة R2 أعلى بكثير. مع المثال الرابع ربما يكون أقرب إلى النسخ المتطابق للملف المضغوط لبرنامج WordPress Plugin.

“-1” دير=”auto”>مثال 1 – حساب التكلفة لـ:

  • مساحة تخزين R2 تبلغ 250 جيجابايت مع 5 ملايين عملية كتابة و25 مليون عملية قراءة
  • Cloudflare Worker لـ 10 ملايين طلب بمتوسط ​​1.8 مللي ثانية لوقت وحدة المعالجة المركزية
  1. تكاليف تخزين R2:

    • التخزين: 250 جيجابايت بسعر 0.015 دولار لكل جيجابايت في الشهر
    • أول 10 جيجابايت مجانية=0 دولار
    • 240 * 0.015 USD=3.60 USD شهريًا
  2. عمليات R2:

    • عمليات الكتابة (الفئة أ): 5 ملايين بسعر 4.50 دولار لكل مليون
    • 5 * 4.50 دولارًا أمريكيًا=22.50 دولارًا أمريكيًا في الشهر
    • قراءة العمليات (الفئة ب): 25 مليون بسعر 0.36 دولار لكل مليون
    • 25 * 0.36 دولار=9.00 دولار شهريًا
  3. عامل كلاودفلير:

    • الطلبات: 10 ملايين (مدرجة في المستوى القياسي)
    • وقت وحدة المعالجة المركزية: 10 مليون * 1.8 مللي ثانية=18 مليون مللي ثانية لوحدة المعالجة المركزية (ضمن 30 مليونًا متضمنة)
    • رسوم الاشتراك 5 دولارات شهريًا

توزيع التكلفة الإجمالية:

  • تخزين R2: 3.60 دولارًا
  • عمليات الكتابة R2: 22.50 دولارًا
  • عمليات القراءة R2: 9.00 دولار
  • استخدام Cloudflare Worker: 0 دولار (ضمن الحدود المضمنة)
  • رسوم اشتراك عامل Cloudflare: 5 دولارات

إجمالي التكلفة الشهرية: 40.10 دولارًا شهريًا

“-1” دير=”auto”>المثال 2 – حساب التكلفة الكبيرة لـ:

  • 2500 جيجا بايت من مساحة تخزين R2
  • 50 مليون عملية كتابة و250 مليون عملية قراءة على R2
  • يقوم Cloudflare Worker بمعالجة 100 مليون طلب، بمتوسط ​​2.5 مللي ثانية من وقت وحدة المعالجة المركزية لكل طلب
  1. تكاليف تخزين R2

    • التخزين: 2500 جيجابايت بسعر 0.015 دولار لكل جيجابايت في الشهر
    • أول 10 جيجابايت مجانية=0 دولار
    • 2490 * 0.015 دولار=37.35 دولار شهريًا
  2. عمليات R2

    • عمليات الكتابة (الفئة أ): 50 مليونًا بسعر 4.50 دولارًا لكل مليون
    • 50 * 4.50 دولارًا أمريكيًا=225.00 دولارًا أمريكيًا شهريًا
    • قراءة العمليات (الفئة ب): 250 مليون بسعر 0.36 دولار لكل مليون
    • 250 * 0.36 دولار=90.00 دولارًا شهريًا
  3. عامل Cloudflare

    • الطلبات: 100 مليون
    • أول 10 ملايين متضمنة في الطبقة القياسية
    • 90 مليون إضافية بسعر 0.30 دولار لكل مليون
    • 90 * 0.30 دولار=27.00 دولار شهريًا
    • وقت وحدة المعالجة المركزية: 100 مليون * 2.5 مللي ثانية=250 مليون مللي ثانية لوحدة المعالجة المركزية
    • تم تضمين أول 30 مليون مللي ثانية لوحدة المعالجة المركزية
    • 220 مليون إضافية بسعر 0.02 دولار لكل مليون
    • 220 * 0.02 دولار=4.40 دولار شهريًا
    • رسوم الاشتراك 5 دولارات شهريًا

توزيع التكلفة الإجمالية:

  • تخزين R2: 37.35 دولارًا
  • عمليات الكتابة R2: 225.00 دولارًا
  • عمليات القراءة R2: 90.00 دولارًا
  • طلبات عامل Cloudflare: 27.00 دولارًا
  • وقت وحدة المعالجة المركزية لعامل Cloudflare: 4.40 دولارًا
  • رسوم اشتراك عامل Cloudflare: 5.00 دولارات

إجمالي التكلفة الشهرية: 388.75 دولارًا شهريًا

“-1” دير=”auto”>المثال 3 – حساب التكلفة الإضافية الكبيرة لـ:

  • 2000 جيجابايت من مساحة تخزين R2
  • 500 مليون عملية كتابة و250 مليون عملية قراءة على R2
  • يد عامل Cloudflare تلبية مليار طلب، بمتوسط ​​3 مللي ثانية من وقت وحدة المعالجة المركزية لكل طلب
  1. تكاليف تخزين R2

    • التخزين: 5000 جيجابايت بسعر 0.015 دولار لكل جيجابايت في الشهر
    • أول 10 جيجابايت مجانية=0 دولار
    • 4990 * 0.015 دولار=74.85 دولار شهريًا
  2. عمليات R2

    • عمليات الكتابة (الفئة أ): 500 مليون بسعر 4.50 دولار لكل مليون
    • 500 * 4.50 دولار=2,250.00 دولار شهريًا
    • قراءة العمليات (الفئة ب): 2.5 مليار بسعر 0.36 دولار لكل مليون
    • 2500 * 0.36 دولار=900.00 دولار شهريًا
  3. عامل Cloudflare

    • الطلبات: 1 مليار
    • أول 10 ملايين متضمنة في الطبقة القياسية
    • 990 مليون إضافية بسعر 0.30 دولار لكل مليون
    • 990 * 0.30 دولار=297.00 دولار شهريًا
    • وقت وحدة المعالجة المركزية: 1 مليار * 3 مللي ثانية=3 مليار مللي ثانية لوحدة المعالجة المركزية
    • تم تضمين أول 30 مليون مللي ثانية لوحدة المعالجة المركزية
    • إضافية 2,970 مليون بسعر 0.02 دولار لكل مليون
    • 2970 * 0.02 دولار=59.40 دولار في الشهر
    • رسوم الاشتراك 5 دولارات شهريًا

توزيع التكلفة الإجمالية:

  • تخزين R2: 74.85 دولارًا
  • عمليات الكتابة R2: 2,250.00 دولارًا
  • عمليات القراءة R2: 900.00 دولار
  • طلبات عامل Cloudflare: 297.00 دولارًا
  • وقت وحدة المعالجة المركزية لعامل Cloudflare: 59.40 دولارًا
  • رسوم اشتراك عامل Cloudflare: 5.00 دولارات

إجمالي التكلفة الشهرية: 3,586.25 دولارًا أمريكيًا شهريًا

“-1” دير=”auto”>المثال 4 – كتب R2 أكثر واقعية:

يوجد حوالي 103 ألف مكون إضافي لـ WordPress حتى تاريخ كتابتها في مستودع المكونات الإضافية SVN. على الرغم من أن 59,979 فقط من هذه المكونات الإضافية تم فتحها ونشرها وعدم إدخالها closed ولاية. تشغل المكونات الإضافية البالغ عددها 59,979 مساحة تبلغ 32 جيجابايت، وتشغل ملفات البيانات التعريفية JSON الخاصة بها مساحة قدرها 420 ميجابايت. إذا قمت بحسابها على أعلى من الحسابين وكان كل مكون إضافي يصدر باستمرار إصدارًا جديدًا يوميًا لمدة 30 يومًا، فسيكون هناك 2× 103000 عملية كتابة R2/يوم – واحدة لكتابة R2 لملف مضغوط وواحدة لكتابة R2 لملف بيانات تعريف JSON=206,000/يوم=6.18 مليون R2 يكتب شهريًا. من الواضح أنه لن يقوم كل مكون إضافي بإصدار إصدار جديد كل يوم لمدة شهر كامل.

  • مساحة تخزين R2 تبلغ 250 جيجابايت مع 6.18 مليون عملية كتابة و10 مليار عملية قراءة. لاحظ أنه إذا قمت بتطبيق ذاكرة التخزين المؤقت لـ Cloudflare CDN باستخدام”https://developers.cloudflare.com/cache/how-to/cache-rules/” rel=”nofollow”> قواعد ذاكرة التخزين المؤقت أمام ملفات R2 المخزنة، لن تحصل على ما يقرب من 10 مليارات من عمليات القراءة في الواقع. مثال على البرنامج المساعد WordPress المنسوخ مؤقتًا لـ Cloudflare CDN”http://github.com/#cached-plugin”>هنا.
  • يقوم Cloudflare Worker بمعالجة 10 مليار طلب، بمتوسط ​​3 مللي ثانية لوقت وحدة المعالجة المركزية لكل طلب
  • كما أن عمليات القراءة والكتابة لـ R2 لم تأخذ في الاعتبار فحص البرنامج النصي الخاص بي للمحتويات الخاصة بجرافات R2.
  1. تكاليف تخزين R2

    • التخزين: 250 جيجابايت بسعر 0.015 دولار لكل جيجابايت في الشهر
    • أول 10 جيجابايت مجانية=0 دولار
    • 240 * 0.015 USD=3.60 USD شهريًا
  2. عمليات R2

    • عمليات الكتابة (الفئة أ): 6.18 مليون بسعر 4.50 دولار لكل مليون
    • 6.18 * 4.50 دولار=27.81 دولار في الشهر
    • قراءة العمليات (الفئة ب): 10 مليار بسعر 0.36 دولار لكل مليون
    • 10000 * 0.36 دولار=3,600.00 دولار شهريًا
  3. عامل Cloudflare

    • الطلبات: 10 مليار
    • أول 10 ملايين متضمنة في الطبقة القياسية
    • إضافية 9990 مليون بسعر 0.30 دولار لكل مليون
    • 9990 * 0.30 دولار=2,997.00 دولار شهريًا
    • وقت وحدة المعالجة المركزية: 10 مليار * 3 مللي ثانية=30 مليار مللي ثانية لوحدة المعالجة المركزية
    • تم تضمين أول 30 مليون مللي ثانية لوحدة المعالجة المركزية
    • إضافية 29,970 مليون بسعر 0.02 دولار لكل مليون
    • 29970 * 0.02 دولار=599.40 دولار شهريًا
    • رسوم الاشتراك 5 دولارات شهريًا

توزيع التكلفة الإجمالية:

  • تخزين R2: 3.60 دولارًا
  • عمليات الكتابة R2: 27.81 دولارًا
  • عمليات قراءة R2: 3,600.00 دولار (سعر مخفض في حالة تنفيذ ذاكرة التخزين المؤقت لـ Cloudflare CDN باستخدام”https://developers.cloudflare.com/cache/how-to/cache-rules/” rel=”nofollow”> قواعد ذاكرة التخزين المؤقت أمام الملفات المخزنة R2)
  • طلبات عامل Cloudflare: 2,997.00 دولارًا
  • وقت وحدة المعالجة المركزية لعامل Cloudflare: 599.40 دولارًا
  • رسوم اشتراك عامل Cloudflare: 5.00 دولارات

إجمالي التكلفة الشهرية: 7,232.81 دولارًا أمريكيًا شهريًا

“-1” دير=”auto”> مقاييس Cloudflare R2 GraphQL

يمكننا أيضًا إجراء فحص”https://developers.cloudflare.com/r2/platform/metrics-analytics/” rel=”nofollow”> مقاييس Cloudflare R2 عبرهم”https://developers.cloudflare.com/analytics/graphql-api/” rel=”nofollow”> واجهة برمجة تطبيقات Cloudflare GraphQL للقراءة/الكتابة لـ R2 (GetObject/PutObject).

export ACCOUNT_ID='YOUR_CLOUDFLARE_ACCOUNT_ID'export API_TOKEN='YOUR_CF_API_TOKEN'export BUCKET_NAME='YOUR_R2_BUCKET_NAME'
./query_r2_graphql.shGraphQL query saved to r2_graphql_query.graphqlChecking last 30 minutes...Metrics found!Checking last 60 minutes...Metrics found!Checking last 120 minutes...Metrics found!Checking last 360 minutes...Metrics found!Checking last 720 minutes...Metrics found!Checking last 1440 minutes...Metrics found!Checking last 2880 minutes...Metrics found!Checking last 4320 minutes...Metrics found!Comprehensive Summary:Last 30 minutes:Querying data from 2024-10-04T05:41:23Z to 2024-10-04T06:11:23ZGetObject: 4Last 60 minutes:Querying data from 2024-10-04T05:11:23Z to 2024-10-04T06:11:23ZGetObject: 475PutObject: 240Last 120 minutes:Querying data from 2024-10-04T04:11:24Z to 2024-10-04T06:11:24ZGetObject: 1121PutObject: 570Last 360 minutes:Querying data from 2024-10-04T00:11:24Z to 2024-10-04T06:11:24ZGetObject: 1149PutObject: 579Last 720 minutes:Querying data from 2024-10-03T18:11:25Z to 2024-10-04T06:11:25ZGetObject: 1149PutObject: 579Last 1440 minutes:Querying data from 2024-10-03T06:11:25Z to 2024-10-04T06:11:25ZGetObject: 1152PutObject: 580Last 2880 minutes:Querying data from 2024-10-02T06:11:25Z to 2024-10-04T06:11:25ZGetObject: 2596PutObject: 891Last 4320 minutes:Querying data from 2024-10-01T06:11:26Z to 2024-10-04T06:11:26ZGetObject: 3396PutObject: 1149Conclusion:Metrics were found in at least one time range.Most recent activity: Last 30 minutesActivity summary:  PutObject: 1149  GetObject: 3396  Querying data from 2024-10-01T06:11:26Z to 2024-10-04T06:11:26Z- Last 4320 minutes:  PutObject: 891  GetObject: 2596  Querying data from 2024-10-02T06:11:25Z to 2024-10-04T06:11:25Z- Last 2880 minutes:  PutObject: 580  GetObject: 1152  Querying data from 2024-10-03T06:11:25Z to 2024-10-04T06:11:25Z- Last 1440 minutes:  PutObject: 579  GetObject: 1149  Querying data from 2024-10-03T18:11:25Z to 2024-10-04T06:11:25Z- Last 720 minutes:  PutObject: 579  GetObject: 1149  Querying data from 2024-10-04T00:11:24Z to 2024-10-04T06:11:24Z- Last 360 minutes:  PutObject: 570  GetObject: 1121  Querying data from 2024-10-04T04:11:24Z to 2024-10-04T06:11:24Z- Last 120 minutes:  PutObject: 240  GetObject: 475  Querying data from 2024-10-04T05:11:23Z to 2024-10-04T06:11:23Z- Last 60 minutes:  GetObject: 4  Querying data from 2024-10-04T05:41:23Z to 2024-10-04T06:11:23Z- Last 30 minutes:Trend analysis:Significant activity in the last 24 hours. Review the 24-hour metrics for a comprehensive overview.Activity detected in the last 72 hours. Compare with 24-hour and 48-hour metrics to identify trends.

النتائج المذكورة أعلاه تأتي مباشرة بعد التشغيل الآلي لـ Github Workflow للتنزيل والتخزين المؤقت محليًا لمكونات WordPress الإضافية 563. يستخدم الخادم المنطقة الزمنية UTC. ولكن يبدو أن آخر 360 دقيقة كانت قريبة من استخدام القراءة/الكتابة لـ Cloudflare R2 للتشغيل:

- Last 360 minutes:  PutObject: 570  GetObject: 1121  Querying data from 2024-10-04T04:11:24Z to 2024-10-04T06:11:24Z

ال r2_graphql_query.graphql الاستعلام المستخدم – ضبط START_DATE و END_DATE لمدة 30، 60، 120، 360، 720، 1440، 2880، 4320 فترات بالدقائق.

استفسار R2ReadWriteOperations($ACCOUNT_ID: خيط!, $START_DATE: وقت!, $END_DATE: وقت!, $BUCKET_NAME: خيط) {  مشاهد {    الحسابات(فلتر: { accountTag: $ACCOUNT_ID }) {      r2OperationsAdaptiveGroups(        حد: 10000        فلتر: {          datetime_geq: $START_DATE          datetime_leq: $END_DATE          اسم دلو: $BUCKET_NAME          actionType_in:[["GetObject", "PutObject", "CreateMultipartUpload", "UploadPart", "CompleteMultipartUpload"]} ) {        مجموع {          طلبات        }        أبعاد {          نوع الإجراء        } } } } }

مقاييس R2 أحدث من محاولات النسخ المتطابق الكامل لمكونات WordPress الإضافية ونشر تخزين كائنات R2:

./query_r2_graphql.shGraphQL query saved to r2_graphql_query.graphqlChecking last 30 minutes...No metrics found.Checking last 60 minutes...No metrics found.Checking last 120 minutes...No metrics found.Checking last 360 minutes...Metrics found!Checking last 720 minutes...Metrics found!Checking last 1440 minutes...Metrics found!Checking last 2880 minutes...Metrics found!Checking last 4320 minutes...Metrics found!Comprehensive Summary:Last 30 minutes:No metrics foundLast 60 minutes:No metrics foundLast 120 minutes:No metrics foundLast 360 minutes:Querying data from 2024-10-05T08:23:38Z to 2024-10-05T14:23:38ZGetObject: 48245PutObject: 11168Last 720 minutes:Querying data from 2024-10-05T02:23:38Z to 2024-10-05T14:23:38ZGetObject: 201650PutObject: 28195Last 1440 minutes:Querying data from 2024-10-04T14:23:38Z to 2024-10-05T14:23:38ZGetObject: 464787PutObject: 111423Last 2880 minutes:Querying data from 2024-10-03T14:23:39Z to 2024-10-05T14:23:39ZGetObject: 469632PutObject: 114657Last 4320 minutes:Querying data from 2024-10-02T14:23:39Z to 2024-10-05T14:23:39ZGetObject: 470208PutObject: 114665Conclusion:Metrics were found in at least one time range.Most recent activity: Last 360 minutesActivity summary:- Last 4320 minutes:  Querying data from 2024-10-02T14:23:39Z to 2024-10-05T14:23:39Z  GetObject: 470208  PutObject: 114665- Last 2880 minutes:  Querying data from 2024-10-03T14:23:39Z to 2024-10-05T14:23:39Z  GetObject: 469632  PutObject: 114657- Last 1440 minutes:  Querying data from 2024-10-04T14:23:38Z to 2024-10-05T14:23:38Z  GetObject: 464787  PutObject: 111423- Last 720 minutes:  Querying data from 2024-10-05T02:23:38Z to 2024-10-05T14:23:38Z  GetObject: 201650  PutObject: 28195- Last 360 minutes:  Querying data from 2024-10-05T08:23:38Z to 2024-10-05T14:23:38Z  GetObject: 48245  PutObject: 11168Trend analysis:No activity in the last hour. Consider investigating if this is unexpected.Significant activity in the last 24 hours. Review the 24-hour metrics for a comprehensive overview.Activity detected in the last 72 hours. Compare with 24-hour and 48-hour metrics to identify trends.

“-1” دير=”auto”> نظرة عامة على النظام

يعمل برنامج WordPress Plugin Mirror Downloader من خلال سلسلة من الخطوات المنسقة التي تتضمن البرنامج النصي bash وCloudflare Worker وتخزين R2. فيما يلي تفصيل تفصيلي للعملية:

  1. تعريف البرنامج المساعد:

    • يقرأ البرنامج النصي bash قائمة بالمكونات الإضافية المطلوبة من ملف التكوين أو وسائط سطر الأوامر. يمكن أيضًا ضبطه ليقرأ من دليل المكونات الإضافية لتثبيت WordPress قائمة مكونات WordPress الإضافية التي سيتم تنزيلها.
    • يقوم بمقارنة هذه القائمة مع ذاكرة التخزين المؤقت المحلية للمكونات الإضافية المثبتة وإصداراتها.
    • يحدد البرنامج النصي المكونات الإضافية التي يجب تنزيلها أو تحديثها بناءً على تناقضات الإصدار.
  2. تفاعل واجهة برمجة التطبيقات:

    • بالنسبة لكل مكون إضافي يتطلب اتخاذ إجراء، يستعلم البرنامج النصي عن واجهة برمجة تطبيقات WordPress.org لجلب أحدث معلومات الإصدار وعنوان URL للتنزيل.
    • تضمن هذه الخطوة أن النظام يعمل دائمًا مع أحدث بيانات المكونات الإضافية.
  3. توليد طلب العامل:

    • يقوم البرنامج النصي بإنشاء طلبات HTTP إلى Cloudflare Worker لكل من ملف ZIP الإضافي وملف المجموع الاختباري المعني وبيانات تعريف JSON الخاصة به.
    • تتضمن هذه الطلبات معلمات استعلام تحدد اسم المكون الإضافي وإصداره ونوع المحتوى المطلوب (ZIP أو ملف المجموع الاختباري أو JSON).
  4. معالجة العمال:

    • عند تلقي طلب، يتحقق العامل أولاً من وجود البيانات المطلوبة في مجموعة R2 المناسبة (WP_PLUGIN_STORE لملفات ZIP، وWP_PLUGIN_INFO لملفات JSON).
    • إذا تم العثور على البيانات في R2، فإن العامل يخدمها مباشرة، مما يؤدي إلى زيادة r2Hits متري.
    • إذا لم يتم العثور عليها، يقوم العامل بجلب البيانات من WordPress.org، ويخزنها في R2، ثم يقدمها. تعمل هذه العملية على زيادة wordpressFetches و cacheMisses المقاييس.
  5. تفاعل تخزين R2:

    • يتفاعل العامل مع تخزين R2 باستخدام env.WP_PLUGIN_STORE و env.WP_PLUGIN_INFO الارتباطات.
    • للتخزين، يستخدم العامل put العمليات مع البيانات الوصفية المناسبة.
    • للاسترجاع يستخدم get العمليات، والعودة إلى WordPress.org إذا لم يتم العثور على الكائن.
  6. ضغط البيانات:

    • يطبق العامل ضغط gzip على الاستجابة إذا كان العميل يدعمها، كما هو مشار إليه في ملف Accept-Encoding header.
    • يتم تنفيذ هذا الضغط باستخدام CompressionStream واجهة برمجة التطبيقات.
  7. التعامل مع الاستجابة:

    • يتلقى البرنامج النصي bash استجابة العامل، والتي تتضمن البيانات المطلوبة (ZIP أو ملف المجموع الاختباري أو JSON) والرؤوس ذات الصلة.
    • يقوم بمعالجة هذه الاستجابة، وحفظ البيانات في نظام الملفات المحلي وتحديث معلومات تتبع الإصدار الخاصة به.
  8. التنفيذ الموازي:

    • عند تكوينه للمعالجة المتوازية، يستخدم البرنامج النصي bash xargs لتفرخ مثيلات متعددة لعملية التنزيل.
    • تعمل هذه الموازاة على تقليل إجمالي الوقت المطلوب لتحديثات المكونات الإضافية المجمعة بشكل كبير.
  9. التسجيل والمقاييس:

    • طوال العملية، يحتفظ كل من البرنامج النصي Worker وbash بسجلات مفصلة.
    • يتتبع العامل المقاييس الرئيسية مثل عدد مرات الوصول إلى ذاكرة التخزين المؤقت وعمليات جلب WordPress وعدد الأخطاء.
    • يقوم البرنامج النصي bash بتسجيل كل خطوة من خطوات تشغيله، بما في ذلك عمليات التحقق من الإصدار ومحاولات التنزيل وعمليات الملف.
  10. معالجة الأخطاء وإعادة المحاولة:

    • ينفذ النظام طبقات متعددة من معالجة الأخطاء، بما في ذلك إعادة محاولة الشبكة في العامل والآليات الاحتياطية في البرنامج النصي bash.
    • يتم نشر رسائل الخطأ التفصيلية من العامل إلى البرنامج النصي bash، مما يسمح باستكشاف الأخطاء وإصلاحها عن علم.
  11. وضع ذاكرة التخزين المؤقت فقط:

    • عند التنشيط، يسمح هذا الوضع للنظام بفحص وتحديث ذاكرة التخزين المؤقت وحاوية R2 دون تنزيل الملفات.
    • إنه مفيد للتخزين المؤقت الوقائي وفحوصات النظام وتقليل التنزيلات غير الضرورية.
  12. التحقق من المجموع الاختباري للبرنامج المساعد:

    • يشتمل النظام الآن على وظيفة جلب المجاميع الاختبارية للمكونات الإضافية وتخزينها والتحقق منها. تعمل هذه الميزة الجديدة على تحسين الأمان من خلال السماح للمستخدمين بالتحقق من سلامة ملفات المكونات الإضافية التي تم تنزيلها مقابل المجموع الاختباري الرسمي لـ WordPress.org.

    “-1” دير=”auto”> كيف يعمل:

    1. يقوم النظام بجلب المجاميع الاختبارية الرسمية من WordPress.org لكل مكون إضافي.
    2. يتم تخزين المجاميع الاختبارية في مجموعة R2 جنبًا إلى جنب مع ملفات المكونات الإضافية وبيانات التعريف.
    3. يمكن للمستخدمين التحقق من المكونات الإضافية التي تم تنزيلها مقابل هذه المجاميع الاختبارية لضمان سلامة الملف.

    “-1” دير=”auto”> الفوائد:

    • اكتشاف ملفات البرنامج المساعد التي يحتمل أن يتم العبث بها أو تلفها
    • تعزيز الأمن العام لعملية إدارة البرنامج المساعد
    • توفير طبقة إضافية من التحقق للمكونات الإضافية المخزنة مؤقتًا

    “-1” دير=”auto”> الاستخدام:

    للتحقق يدويًا من المجموع الاختباري للمكون الإضافي:

    1. جلب المجاميع الاختبارية:

      checksums.json”>

      حليقة -s "https://your-worker-url.workers.dev?plugin=plugin-name&version=version&type=checksums" > checksums.json
    2. استخدم أداة مثل jq لتحليل JSON ومقارنة المجاميع الاختبارية:

      checksums.md5 md5sum -c checksums.md5″>

      jq -r '.files[] | "(.md5) (.اسم الملف)"' checksums.json > checksums.md5 md5sum -c checksums.md5

تسمح هذه البنية بإدارة المكونات الإضافية لـ WordPress تتسم بالكفاءة والقابلية للتطوير والمرونة، مع الاستفادة من نقاط قوة حوسبة الحافة والتخزين الموزع لإنشاء نظام انعكاس قوي.

“-1” دير=”auto”>أمثلة

يوضح هذا المثال أن مكونات WordPress الإضافية التي تم اختيارها للتنزيل تم استرجاعها من مجموعة تخزين كائنات Cloudflare R2 S3 الموجودة بدلاً من WordPress.org حيث تم تنزيلها وتخزينها مؤقتًا مسبقًا. إذا قمت بتشغيل البرنامج النصي مع -c وضع ذاكرة التخزين المؤقت فقط، فهو يسمح بفحص وتحديث ذاكرة التخزين المؤقت وحاوية R2 دون تنزيل الملفات، وهو مفيد للتخزين المؤقت الوقائي وفحوصات النظام حيث لا تحتاج إلى تنزيل فعلي لملفات مضغوطة للمكونات الإضافية إلى الخادم الذي قمت بتشغيل البرنامج النصي منه.

“-1” دير=”auto”> الاستخدام الأساسي

time ./get_plugins_r2.sh -p 1 -d

“-1” دير=”auto”>الخيارات

  • -d: تمكين وضع التصحيح لتسجيل أكثر تفصيلاً
  • -p N: قم بتعيين عدد مهام التنزيل المتوازية (على سبيل المثال، -p 4 لـ 4 وظائف موازية)
  • -a: قم بتنزيل جميع ملحقات WordPress المتاحة
  • -l: قم بإنشاء قائمة بجميع المكونات الإضافية دون تنزيلها. تم الحفظ في الملف ${WORDPRESS_WORKDIR}/wp-plugin-svn-list.txt
  • -D y: تمكين تأخير التنزيل
  • -t N: اضبط مدة التأخير بالثواني (على سبيل المثال، -t 5 لتأخير لمدة 5 ثوان)
  • -f: فرض تحديث البيانات التعريفية لـ JSON لجميع المكونات الإضافية التي تمت معالجتها
  • -c: التشغيل في وضع ذاكرة التخزين المؤقت فقط (تحقق من ذاكرة التخزين المؤقت وتحديثها دون تنزيل f إيل)

أمثلة:

# Run with debug mode./get_plugins_r2.sh -d# Run with 4 parallel jobs./get_plugins_r2.sh -p 4# Download all plugins instead of selectively predefined plugins./get_plugins_r2.sh -a# List all plugins without downloading./get_plugins_r2.sh -l# Run with a 5-second delay between downloads./get_plugins_r2.sh -D y -t 5# Run with debug mode, 4 parallel jobs, and a 3-second delay./get_plugins_r2.sh -d -p 4 -D y -t 3# Force update JSON metadata for all processed plugins./get_plugins_r2.sh -f# Run with debug mode, 4 parallel jobs, a 3-second delay, and force update./get_plugins_r2.sh -d -p 4 -D y -t 3 -f# Run in cache-only mode./get_plugins_r2.sh -c# Run in cache-only mode with debug and force update./get_plugins_r2.sh -c -d -f

كامل get_plugins_r2.sh يجري.

time ./get_plugins_r2.sh -p 1 -dProcessing plugin: advanced-custom-fields[DEBUG] Checking latest version and download link for advanced-custom-fields[DEBUG] Latest version for advanced-custom-fields: 6.3.6[DEBUG] API download link for advanced-custom-fields: https://downloads.wordpress.org/plugin/advanced-custom-fields.6.3.6.zip[DEBUG] Stored version for advanced-custom-fields: 6.3.6[DEBUG] API-provided download link for advanced-custom-fields: https://downloads.wordpress.org/plugin/advanced-custom-fields.6.3.6.zip[DEBUG] Constructed download link for advanced-custom-fields: https://downloads.wordpress.org/plugin/advanced-custom-fields.6.3.6.zip[DEBUG] Using API-provided download link for advanced-custom-fields: https://downloads.wordpress.org/plugin/advanced-custom-fields.6.3.6.zip[DEBUG] Downloading advanced-custom-fields version 6.3.6 through Cloudflare Worker[DEBUG] Successfully downloaded advanced-custom-fields version 6.3.6 from R2 storageSuccessfully processed advanced-custom-fields.Time taken for advanced-custom-fields: 0.8319 seconds[DEBUG] Saving plugin json metadata for advanced-custom-fields version 6.3.6[DEBUG] json metadata for advanced-custom-fields version 6.3.6 saved (json metadata file already exists)[DEBUG] Successfully saved json metadata for advanced-custom-fields.[DEBUG] Fetching and saving checksums for advanced-custom-fields version 6.3.6[DEBUG] Sending request to Worker for checksums: https://your-worker-url.workers.dev?plugin=advanced-custom-fields&version=6.3.6&type=checksums[DEBUG] Received response with status code: 200[DEBUG] Response source: [DEBUG] Checksums for advanced-custom-fields version 6.3.6 saved (checksums file already exists)[DEBUG] Successfully fetched and saved checksums for advanced-custom-fields.Processing plugin: akismet[DEBUG] Checking latest version and download link for akismet[DEBUG] Latest version for akismet: 5.3.3[DEBUG] API download link for akismet: https://downloads.wordpress.org/plugin/akismet.5.3.3.zip[DEBUG] Stored version for akismet: 5.3.3[DEBUG] API-provided download link for akismet: https://downloads.wordpress.org/plugin/akismet.5.3.3.zip[DEBUG] Constructed download link for akismet: https://downloads.wordpress.org/plugin/akismet.5.3.3.zip[DEBUG] Using API-provided download link for akismet: https://downloads.wordpress.org/plugin/akismet.5.3.3.zip[DEBUG] Downloading akismet version 5.3.3 through Cloudflare Worker[DEBUG] Successfully downloaded akismet version 5.3.3 from R2 storageSuccessfully processed akismet.Time taken for akismet: 0.3040 seconds[DEBUG] Saving plugin json metadata for akismet version 5.3.3[DEBUG] json metadata for akismet version 5.3.3 saved (json metadata file already exists)[DEBUG] Successfully saved json metadata for akismet.[DEBUG] Fetching and saving checksums for akismet version 5.3.3[DEBUG] Sending request to Worker for checksums: https://your-worker-url.workers.dev?plugin=akismet&version=5.3.3&type=checksums[DEBUG] Received response with status code: 200[DEBUG] Response source: [DEBUG] Checksums for akismet version 5.3.3 saved (checksums file already exists)[DEBUG] Successfully fetched and saved checksums for akismet.Processing plugin: amr-cron-manager[DEBUG] Checking latest version and download link for amr-cron-manager[DEBUG] Latest version for amr-cron-manager: 2.3[DEBUG] API download link for amr-cron-manager: https://downloads.wordpress.org/plugin/amr-cron-manager.2.3.zip[DEBUG] Stored version for amr-cron-manager: 2.3[DEBUG] API-provided download link for amr-cron-manager: https://downloads.wordpress.org/plugin/amr-cron-manager.2.3.zip[DEBUG] Constructed download link for amr-cron-manager: https://downloads.wordpress.org/plugin/amr-cron-manager.2.3.zip[DEBUG] Using API-provided download link for amr-cron-manager: https://downloads.wordpress.org/plugin/amr-cron-manager.2.3.zip[DEBUG] Downloading amr-cron-manager version 2.3 through Cloudflare Worker[DEBUG] Successfully downloaded amr-cron-manager version 2.3 from R2 storageSuccessfully processed amr-cron-manager.Time taken for amr-cron-manager: 0.5523 seconds[DEBUG] Saving plugin json metadata for amr-cron-manager version 2.3[DEBUG] json metadata for amr-cron-manager version 2.3 saved (json metadata file already exists)[DEBUG] Successfully saved json metadata for amr-cron-manager.[DEBUG] Fetching and saving checksums for amr-cron-manager version 2.3[DEBUG] Sending request to Worker for checksums: https://your-worker-url.workers.dev?plugin=amr-cron-manager&version=2.3&type=checksums[DEBUG] Received response with status code: 200[DEBUG] Response source: [DEBUG] Checksums for amr-cron-manager version 2.3 saved (checksums file already exists)[DEBUG] Successfully fetched and saved checksums for amr-cron-manager.Processing plugin: assets-manager[DEBUG] Checking latest version and download link for assets-manager[DEBUG] Latest version for assets-manager: 1.0.2[DEBUG] API download link for assets-manager: https://downloads.wordpress.org/plugin/assets-manager.zip[DEBUG] Stored version for assets-manager: 1.0.2[DEBUG] API-provided download link for assets-manager: https://downloads.wordpress.org/plugin/assets-manager.zip[DEBUG] Constructed download link for assets-manager: https://downloads.wordpress.org/plugin/assets-manager.1.0.2.zip[DEBUG] Using API-provided download link for assets-manager: https://downloads.wordpress.org/plugin/assets-manager.zip[DEBUG] Downloading assets-manager version 1.0.2 through Cloudflare Worker[DEBUG] Successfully downloaded assets-manager version 1.0.2 from R2 storageSuccessfully processed assets-manager.Time taken for assets-manager: 0.4126 seconds[DEBUG] Saving plugin json metadata for assets-manager version 1.0.2[DEBUG] json metadata for assets-manager version 1.0.2 saved (json metadata file already exists)[DEBUG] Successfully saved json metadata for assets-manager.[DEBUG] Fetching and saving checksums for assets-manager version 1.0.2[DEBUG] Sending request to Worker for checksums: https://your-worker-url.workers.dev?plugin=assets-manager&version=1.0.2&type=checksums[DEBUG] Received response with status code: 200[DEBUG] Response source: [DEBUG] Checksums for assets-manager version 1.0.2 saved (checksums file already exists)[DEBUG] Successfully fetched and saved checksums for assets-manager.Processing plugin: autoptimize[DEBUG] Checking latest version and download link for autoptimize[DEBUG] Latest version for autoptimize: 3.1.12[DEBUG] API download link for autoptimize: https://downloads.wordpress.org/plugin/autoptimize.3.1.12.zip[DEBUG] Stored version for autoptimize: 3.1.12[DEBUG] API-provided download link for autoptimize: https://downloads.wordpress.org/plugin/autoptimize.3.1.12.zip[DEBUG] Constructed download link for autoptimize: https://downloads.wordpress.org/plugin/autoptimize.3.1.12.zip[DEBUG] Using API-provided download link for autoptimize: https://downloads.wordpress.org/plugin/autoptimize.3.1.12.zip[DEBUG] Downloading autoptimize version 3.1.12 through Cloudflare Worker[DEBUG] Successfully downloaded autoptimize version 3.1.12 from R2 storageSuccessfully processed autoptimize.Time taken for autoptimize: 0.2655 seconds[DEBUG] Saving plugin json metadata for autoptimize version 3.1.12[DEBUG] json metadata for autoptimize version 3.1.12 saved (json metadata file already exists)[DEBUG] Successfully saved json metadata for autoptimize.[DEBUG] Fetching and saving checksums for autoptimize version 3.1.12[DEBUG] Sending request to Worker for checksums: https://your-worker-url.workers.dev?plugin=autoptimize&version=3.1.12&type=checksums[DEBUG] Received response with status code: 200[DEBUG] Response source: [DEBUG] Checksums for autoptimize version 3.1.12 saved (checksums file already exists)[DEBUG] Successfully fetched and saved checksums for autoptimize.Processing plugin: better-search-replace[DEBUG] Checking latest version and download link for better-search-replace[DEBUG] Latest version for better-search-replace: 1.4.7[DEBUG] API download link for better-search-replace: https://downloads.wordpress.org/plugin/better-search-replace.zip[DEBUG] Stored version for better-search-replace: 1.4.7[DEBUG] API-provided download link for better-search-replace: https://downloads.wordpress.org/plugin/better-search-replace.zip[DEBUG] Constructed download link for better-search-replace: https://downloads.wordpress.org/plugin/better-search-replace.1.4.7.zip[DEBUG] Using API-provided download link for better-search-replace: https://downloads.wordpress.org/plugin/better-search-replace.zip[DEBUG] Downloading better-search-replace version 1.4.7 through Cloudflare Worker[DEBUG] Successfully downloaded better-search-replace version 1.4.7 from R2 storageSuccessfully processed better-search-replace.Time taken for better-search-replace: 0.3155 seconds[DEBUG] Saving plugin json metadata for better-search-replace version 1.4.7[DEBUG] json metadata for better-search-replace version 1.4.7 saved (json metadata file already exists)[DEBUG] Successfully saved json metadata for better-search-replace.[DEBUG] Fetching and saving checksums for better-search-replace version 1.4.7[DEBUG] Sending request to Worker for checksums: https://your-worker-url.workers.dev?plugin=better-search-replace&version=1.4.7&type=checksums[DEBUG] Received response with status code: 200[DEBUG] Response source: [DEBUG] Checksums for better-search-replace version 1.4.7 saved (checksums file already exists)[DEBUG] Successfully fetched and saved checksums for better-search-replace.Processing plugin: cache-enabler[DEBUG] Checking latest version and download link for cache-enabler[DEBUG] Latest version for cache-enabler: 1.8.15[DEBUG] API download link for cache-enabler: https://downloads.wordpress.org/plugin/cache-enabler.1.8.15.zip[DEBUG] Stored version for cache-enabler: 1.8.15[DEBUG] API-provided download link for cache-enabler: https://downloads.wordpress.org/plugin/cache-enabler.1.8.15.zip[DEBUG] Constructed download link for cache-enabler: https://downloads.wordpress.org/plugin/cache-enabler.1.8.15.zip[DEBUG] Using API-provided download link for cache-enabler: https://downloads.wordpress.org/plugin/cache-enabler.1.8.15.zip[DEBUG] Downloading cache-enabler version 1.8.15 through Cloudflare Worker[DEBUG] Successfully downloaded cache-enabler version 1.8.15 from R2 storageSuccessfully processed cache-enabler.Time taken for cache-enabler: 0.5615 seconds[DEBUG] Saving plugin json metadata for cache-enabler version 1.8.15[DEBUG] json metadata for cache-enabler version 1.8.15 saved (json metadata file already exists)[DEBUG] Successfully saved json metadata for cache-enabler.[DEBUG] Fetching and saving checksums for cache-enabler version 1.8.15[DEBUG] Sending request to Worker for checksums: https://your-worker-url.workers.dev?plugin=cache-enabler&version=1.8.15&type=checksums[DEBUG] Received response with status code: 200[DEBUG] Response source: [DEBUG] Checksums for cache-enabler version 1.8.15 saved (checksums file already exists)[DEBUG] Successfully fetched and saved checksums for cache-enabler.Processing plugin: classic-editor[DEBUG] Checking latest version and download link for classic-editor[DEBUG] Latest version for classic-editor: 1.6.5[DEBUG] API download link for classic-editor: https://downloads.wordpress.org/plugin/classic-editor.1.6.5.zip[DEBUG] Stored version for classic-editor: 1.6.5[DEBUG] API-provided download link for classic-editor: https://downloads.wordpress.org/plugin/classic-editor.1.6.5.zip[DEBUG] Constructed download link for classic-editor: https://downloads.wordpress.org/plugin/classic-editor.1.6.5.zip[DEBUG] Using API-provided download link for classic-editor: https://downloads.wordpress.org/plugin/classic-editor.1.6.5.zip[DEBUG] Downloading classic-editor version 1.6.5 through Cloudflare Worker[DEBUG] Successfully downloaded classic-editor version 1.6.5 from R2 storageSuccessfully processed classic-editor.Time taken for classic-editor: 0.3234 seconds[DEBUG] Saving plugin json metadata for classic-editor version 1.6.5[DEBUG] json metadata for classic-editor version 1.6.5 saved (json metadata file already exists)[DEBUG] Successfully saved json metadata for classic-editor.[DEBUG] Fetching and saving checksums for classic-editor version 1.6.5[DEBUG] Sending request to Worker for checksums: https://your-worker-url.workers.dev?plugin=classic-editor&version=1.6.5&type=checksums[DEBUG] Received response with status code: 200[DEBUG] Response source: [DEBUG] Checksums for classic-editor version 1.6.5 saved (checksums file already exists)[DEBUG] Successfully fetched and saved checksums for classic-editor.Plugin download process completed.real    0m23.510suser    0m0.700ssys     0m0.324s
ls -lahrt /home/nginx/domains/plugins.domain.com/public/total 6.6Mdrwxr-sr-x 4 root nginx   39 Sep 30 12:56 ..-rw-r--r-- 1 root nginx 6.0M Oct  4 03:17 advanced-custom-fields.6.3.6.zip-rw-r--r-- 1 root nginx 104K Oct  4 03:17 akismet.5.3.3.zip-rw-r--r-- 1 root nginx 9.3K Oct  4 03:18 amr-cron-manager.2.3.zip-rw-r--r-- 1 root nginx  20K Oct  4 03:18 assets-manager.1.0.2.zip-rw-r--r-- 1 root nginx 259K Oct  4 03:18 autoptimize.3.1.12.zip-rw-r--r-- 1 root nginx 155K Oct  4 03:18 better-search-replace.1.4.7.zip-rw-r--r-- 1 root nginx  45K Oct  4 03:18 cache-enabler.1.8.15.zip-rw-r--r-- 1 root nginx  20K Oct  4 03:18 classic-editor.1.6.5.zip

يحفظ البرنامج النصي أيضًا رؤوس استجابة HTTP الخاصة بكل مكون إضافي في WordPress لاستكشاف الأخطاء وإصلاحها

مثال حيث أن مصدر مكون WordPress الإضافي هو من تنزيل WordPress https://downloads.wordpress.org/plugin/autoptimize.3.1.12.zip عبر x-source: WordPress.

cat /home/nginx/domains/plugins.domain.com/plugin-logs/autoptimize.3.1.12.headers HTTP/2 200 التاريخ: الاثنين، 30 سبتمبر 2024 الساعة 18:28:57 بتوقيت جرينتش نوع المحتوى: application/zip cf -ray: 8cb64687de35311c-LAX cf-cache-status: MISS Access-control-allow-origin: *التحكم في ذاكرة التخزين المؤقت: عام، الحد الأقصى للعمر=3600 ترتيب المحتوى: المرفق; اسم الملف="autoptimize.3.1.12.zip"آخر تعديل: الخميس، 25 يوليو 2024، 17:15:10 بتوقيت جرينتش Access-control-allow-headers: Content-Type Access-control-allow-methods: GET، OPTIONS x-latest-version: 3.1.12 x-nc: انتهت صلاحية ord 8 x-source: WordPress x-suggested-filename: autoptimize.3.1.12.zip server: cloudflare

مثال حيث يكون المصدر من الإصدار المخزن مؤقتًا لحاوية Cloudflare R2 S3 x-source: R2.

رغم ذلك content-type هو JSON حيث يكتشف البرنامج النصي أنه يحتوي بالفعل على أحدث إصدار من البرنامج الإضافي في دليل المرآة المحلي، ولا يحتاج إلى تنزيل ملف ZIP مرة أخرى. وبدلاً من ذلك، فهو يقوم فقط بتحديث البيانات الوصفية أو التحقق منها لهذا البرنامج الإضافي. تم تصميم العامل للتعامل مع كل من ملفات ZIP وبيانات تعريف JSON. عندما لا يكون من الضروري تنزيل ملف ZIP الكامل (لأنه موجود محليًا بالفعل)، يقوم العامل بإرجاع بيانات تعريف JSON حول المكون الإضافي بدلاً من ذلك.

cat /home/nginx/domains/plugins.domain.com/plugin-logs/autoptimize.3.1.12.headersHTTP/2 200 date: Wed, 02 Oct 2024 19:42:28 GMTcontent-type: application/jsoncontent-length: 33cf-ray: 8cc72d037ea27bcd-LAXcf-cache-status: HITaccept-ranges: bytesage: 1911last-modified: Wed, 02 Oct 2024 19:10:37 GMTvary: Accept-Encodingx-source: R2server: cloudflare

أعد الاختبار مع الإزالة اليدوية للمكون الإضافي

rm -f /home/nginx/domains/plugins.domain.com/public/autoptimize.3.1.12.zip

مقتطف من فقط autoptimize إعادة تنزيل البرنامج المساعد محليا.

./get_plugins_r2.sh -p 1 -dProcessing plugin: autoptimize[DEBUG] Checking latest version and download link for autoptimize[DEBUG] Latest version for autoptimize: 3.1.12[DEBUG] API download link for autoptimize: https://downloads.wordpress.org/plugin/autoptimize.3.1.12.zip[DEBUG] Stored version for autoptimize: 3.1.12[DEBUG] API-provided download link for autoptimize: https://downloads.wordpress.org/plugin/autoptimize.3.1.12.zip[DEBUG] Constructed download link for autoptimize: https://downloads.wordpress.org/plugin/autoptimize.3.1.12.zip[DEBUG] Using API-provided download link for autoptimize: https://downloads.wordpress.org/plugin/autoptimize.3.1.12.zip[DEBUG] Downloading autoptimize version 3.1.12 through Cloudflare Worker[DEBUG] Successfully downloaded autoptimize version 3.1.12 from R2 storageSuccessfully processed autoptimize.Time taken for autoptimize: 0.2593 seconds[DEBUG] Saving plugin json metadata for autoptimize version 3.1.12[DEBUG] json metadata for autoptimize version 3.1.12 saved (json metadata file already exists)[DEBUG] Successfully saved json metadata for autoptimize.Plugin download process completed.

أعد فحص رأس استجابة HTTP المحفوظة لـ autoptimize مع content-type: application/zip و x-source: R2.

cat /home/nginx/domains/plugins.domain.com/plugin-logs/autoptimize.3.1.12.headers HTTP/2 200 التاريخ: الأربعاء، 02 أكتوبر 2024 الساعة 21:10:11 بتوقيت جرينتش نوع المحتوى: تطبيق/محتوى مضغوط - الطول: 264379 التحكم في الوصول - السماح - الأصل: *التحكم في ذاكرة التخزين المؤقت: عام، الحد الأقصى للعمر=3600 ترتيب المحتوى: المرفق; اسم الملف="autoptimize.3.1.12.zip"ترميز المحتوى: التحكم في الوصول إلى الهوية، السماح بالرؤوس: طرق التحكم في الوصول إلى نوع المحتوى: GET، OPTIONS مصدر x: R2 اسم الملف المقترح x: autoptimize.3.1.12.zip الخادم: cloudflare cf- راي: 8cc7ad8048d87e9c-LAX

“-1” دير=”auto”> المجموع الاختباري للبرنامج المساعد معكوسة

يتضمن النظام الآن وظيفة جلب المجاميع الاختبارية للمكونات الإضافية وتخزينها والتحقق منها. تعمل هذه الميزة الجديدة على تحسين الأمان من خلال السماح للمستخدمين بالتحقق من سلامة ملفات المكونات الإضافية التي تم تنزيلها مقابل المجموع الاختباري الرسمي لـ WordPress.org.

“-1” دير=”auto”> كيف يعمل:

  1. يقوم النظام بجلب المجاميع الاختبارية الرسمية من WordPress.org لكل مكون إضافي.
  2. يتم تخزين المجاميع الاختبارية في مجموعة R2 جنبًا إلى جنب مع ملفات المكونات الإضافية وبيانات التعريف.
  3. يمكن للمستخدمين التحقق من المكونات الإضافية التي تم تنزيلها مقابل هذه المجاميع الاختبارية لضمان سلامة الملف.

مثال على التشغيل فقط autoptimize البرنامج المساعد:

rm -rf /home/wordpress-svn/last_changed_revisions.txt && rm -rf /home/nginx/domains/plugins.domain.com/public/*time ./get_plugins_r2.sh -p 1 -dProcessing plugin: autoptimize[DEBUG] Checking latest version and download link for autoptimize[DEBUG] Latest version for autoptimize: 3.1.12[DEBUG] API download link for autoptimize: https://downloads.wordpress.org/plugin/autoptimize.3.1.12.zip[DEBUG] Stored version for autoptimize: 3.1.12[DEBUG] API-provided download link for autoptimize: https://downloads.wordpress.org/plugin/autoptimize.3.1.12.zip[DEBUG] Constructed download link for autoptimize: https://downloads.wordpress.org/plugin/autoptimize.3.1.12.zip[DEBUG] Using API-provided download link for autoptimize: https://downloads.wordpress.org/plugin/autoptimize.3.1.12.zip[DEBUG] Downloading autoptimize version 3.1.12 through Cloudflare Worker[DEBUG] Successfully downloaded autoptimize version 3.1.12 from R2 storageSuccessfully processed autoptimize.Time taken for autoptimize: 0.1435 seconds[DEBUG] Saving plugin json metadata for autoptimize version 3.1.12[DEBUG] json metadata for autoptimize version 3.1.12 saved (json metadata file already exists)[DEBUG] Successfully saved json metadata for autoptimize.[DEBUG] Fetching and saving checksums for autoptimize version 3.1.12[DEBUG] Sending request to Worker for checksums: https://your-worker-url.workers.dev?plugin=autoptimize&version=3.1.12&type=checksums&force_update=true[DEBUG] Received response with status code: 200[DEBUG] Response source: [DEBUG] Checksums for autoptimize version 3.1.12 saved (checksums file already exists)[DEBUG] Successfully fetched and saved checksums for autoptimize.Plugin download process completed.real    0m1.978suser    0m0.097ssys     0m0.045s

تحميل البرنامج المساعد ووردبريس

حليقة -I https://downloads.mycloudflareproxy_domain.com/autoptimize.3.1.12.zip HTTP/2 200 التاريخ: الجمعة، 04 أكتوبر 2024 01:56:31 بتوقيت جرينتش نوع المحتوى: application/zip content-length: 264379 etag : "49dbcac863d2ec3e3ff4675064a943ec"آخر تعديل: الثلاثاء، 01 أكتوبر 2024، 16:06:26 توقيت جرينتش يختلف: قبول ترميز cf-cache-status: عمر HIT: 72381 تنتهي صلاحيته: الاثنين، 04 نوفمبر 2024 01:56:31 بتوقيت جرينتش التحكم في ذاكرة التخزين المؤقت: عام، الحد الأقصى -age=2678400 قبول النطاقات: خادم البايت: cloudflare cf-ray: 8cd18e4f0f897d58-LAX

تم الاستعلام عن المجموع الاختباري للمكون الإضافي لـ WordPress من نسخة مخزن الكائنات R2 S3 المحلية المتطابقة وCloudflare المخزنة مؤقتًا في https://downloads.mycloudflareproxy_domain.com/plugin-checksums/autoptimize/3.1.12.json والذي يهدف إلى تكرار إصدار WordPress.org على https://downloads.wordpress.org/plugin-checksums/autoptimize/3.1.2.json. تمت الإضافة zip_mirror الرابط الميداني لنسخة المرآة المحلية من رابط تنزيل البرنامج المساعد أيضًا.

حليقة -s https://downloads.mycloudflareproxy_domain.com/plugin-checksums/autoptimize/3.1.12.json | جق -ص '[.zip, .zip_mirror]'[  "https://downloads.wordpress.org/plugins/autoptimize.3.1.12.zip",  "https://downloads.mycloudflareproxy_domain.com/autoptimize.3.1.12.zip"]

إخراج المجاميع الاختبارية الكاملة لبرنامج WordPress. ال zip_mirror يتم ترتيب الحقل في أسفل الإخراج. يمكن إعادة ترتيبه للعرض المرئي ولكن ليس هناك حاجة إليه.

حليقة -s https://downloads.mycloudflareproxy_domain.com/plugin-checksums/autoptimize/3.1.12.json | جق -ص {  "plugin": "autoptimize",  "version": "3.1.12",  "source": "https://plugins.svn.wordpress.org/autoptimize/tags/3.1.12/",  "zip": "https://downloads.wordpress.org/plugins/autoptimize.3.1.12.zip",  "files": {    "LICENSE": {      "md5": "8264535c0c4e9c6c335635c4026a8022",      "sha256": "a45d0bb572ed792ed34627a72621834b3ba92aab6e2cc4e04301dee7a728d753"    },    "autoptimize.php": {      "md5": "6e2e19ab82b51403c53752dc7644dc72",      "sha256": "a08620d3ff01f11e5b487db915a38c9aa09b6d0c2fad9db30893bf62598013bf"    },    "autoptimize_helper.php_example": {      "md5": "205d3afe9b9f8936b390c48dbfb11bab",      "sha256": "c74b4a74fd693919e1f3afddcc5d3fa0b1522d5934bffaee2fbf60ccfd39dc8d"    },    "classes/autoptimizeBase.php": {      "md5": "244ccb3b3864a5097974958a7206988a",      "sha256": "517c79450d349e69d1e2d0918605855d4ed330b02dfec2eb3dc472e20fa10684"    },    "classes/autoptimizeCLI.php": {      "md5": "b944f23eb3d0505dfc4501eecb430ba8",      "sha256": "bfc6752846fadf2b80db3bba6734f2c5f09c6af24fc2660c196ab2ee57330801"    },    "classes/autoptimizeCSSmin.php": {      "md5": "94ecf9cc6b56b0777a9585abb24e4459",      "sha256": "158493813a94360b25b0b080815d5fa74974ee79c77ea623128f5b21c6e8e16d"    },    "classes/autoptimizeCache.php": {      "md5": "d27f75afefb66f13913228857c75da1a",      "sha256": "666fabdc23a15982d2047d3a1c01a14012905af2839f63ebeca0e06adbaadf25"    },    "classes/autoptimizeCacheChecker.php": {      "md5": "d373eccbc28843d7b584e6939a9851ee",      "sha256": "9428a93e65b6b1686c3c9390d4169d0e8d0911e4a89ef299ed86a844722a5b91"    },    "classes/autoptimizeCompatibility.php": {      "md5": "d374d632ab8f31198c2b1dee5eb88c5a",      "sha256": "0a1aaaa15324cbd8aa8228b585227099142bed6fb12001a6511292113c1d6938"    },    "classes/autoptimizeConfig.php": {      "md5": "ea64f11180ccdd9c080ee3abca7fc4e6",      "sha256": "06f15af7d3044748e21ced12b83278d9f7e12b05b767c9dabf045aaed612ea24"    },    "classes/autoptimizeCriticalCSSBase.php": {      "md5": "bff4d80b271006c32120200c20efda3f",      "sha256": "8a667398e8296d890b6a7f55c908349b6b4de0c388c3fdfbdd9cb449f2557b9b"    },    "classes/autoptimizeCriticalCSSCore.php": {      "md5": "56c4ea2d53baaaa04756228fe34baa64",      "sha256": "350e5fd3ee001edac63660a915d953b19840f9c11a3ba29b37f2f7a8230c8411"    },    "classes/autoptimizeCriticalCSSCron.php": {      "md5": "43246f6d586b1227cfd89683457b9287",      "sha256": "8b7f7ebc5ec894fd878f0c28d61795da85df595653a6015656a44e8e471f977a"    },    "classes/autoptimizeCriticalCSSEnqueue.php": {      "md5": "933e49f5fee25511403f2a000d699160",      "sha256": "cc2a9466ab19446e778fc0c26d09ba7cf27b814c70095628f9b50fc9800e866a"    },    "classes/autoptimizeCriticalCSSSettings.php": {      "md5": "8a7c4edd54a4429e464ad4ac443e8854",      "sha256": "69b4320a7f2f1b2f037c158da07f1937e6eef066f959d81baddb303a5cc3f3c4"    },    "classes/autoptimizeCriticalCSSSettingsAjax.php": {      "md5": "24fe31304f39dfc39256e567544cd26b",      "sha256": "a15640d7713934e0159fc1a2a6ea8dfadff5e856ca3c84450b00c673dda24ba2"    },    "classes/autoptimizeExitSurvey.php": {      "md5": "4ea39d1515cfd872686859d18d41c16d",      "sha256": "3374ab856f52454d8321e02ab4b52630579fff4cbf183071d5d86552f3ac54c3"    },    "classes/autoptimizeExtra.php": {      "md5": "41a26b05794390aa329c7de4215a7852",      "sha256": "e1a9d6e02545c037f231ea184f0905fa792b60dc1c8ab55fc29821d4a11a26a8"    },    "classes/autoptimizeHTML.php": {      "md5": "5bdf7ff2306d1233bb543f2f1d611979",      "sha256": "134406ba8659761c53266724f4ede1f9c3ac9392ece93de740cd52c734d6b0f8"    },    "classes/autoptimizeImages.php": {      "md5": "5cd15041edeeabdf1ff3f798f6203a90",      "sha256": "f78351110bfad5694244e5cee2a95b6fcb9c08fee999b8db97db4e9e0cb1f637"    },    "classes/autoptimizeMain.php": {      "md5": "f24831cfba1c706bd360f73d1bf33a70",      "sha256": "d91149c20d607c277eaeb157d816b075cc1ead523b46d8db7f09627303c5a713"    },    "classes/autoptimizeMetabox.php": {      "md5": "07cfc8da3c46f19018ff293e5e6d3447",      "sha256": "4b9ab76596e47c8cc5685f896ea3f39297b3d345e696b170e12ea535aaf9229f"    },    "classes/autoptimizeOptionWrapper.php": {      "md5": "76c8b1abc9e98dff698ded12f3ad6deb",      "sha256": "c682cd04e98b5b51434786b89da5cad30b05250fc6a098c38bc5230fb2ff0878"    },    "classes/autoptimizePartners.php": {      "md5": "73a94c24630e6cbeb9821d3083f57adb",      "sha256": "4d03a6a22f4afd8741ab1821154412e6118769307d0b0dd9fbaba83ef1d882bf"    },    "classes/autoptimizeProTab.php": {      "md5": "5ac6c624ed4cf7f924fb00918734184d",      "sha256": "5a8fdad738be1b3b0c3d67b0d982c85630f7de69d8436ec73488709322bb49eb"    },    "classes/autoptimizeScripts.php": {      "md5": "963d5c657448274aecdd86d2cb4b42d7",      "sha256": "c53d392cf82a25b9e7c082649a91d263bf6d16d88b50c81321714dd273255353"    },    "classes/autoptimizeSpeedupper.php": {      "md5": "63ae28bacd6791c67b7b07dceea41ccd",      "sha256": "1b6b8cf39a0769bd75d74904513f02c2ae17393ceff73a7aa1b658f36630c678"    },    "classes/autoptimizeStyles.php": {      "md5": "1f890f572c7a028f877b5c3b08ac921d",      "sha256": "19910db7577acd9a0d815e865c847ec8baf383f4db577b6eec6221e849ec71e8"    },    "classes/autoptimizeToolbar.php": {      "md5": "2617929eec3c4fb2552bbba8fe53bde3",      "sha256": "7b0738c7c5130a48f294c6d4a3f07b27c0f98dcdee2b2ee0e1d9eaef1245d6dc"    },    "classes/autoptimizeUtils.php": {      "md5": "cc6426ed2fc0cdb0342c1b39f537f2b9",      "sha256": "8f3796d9cc141ec24d30afed0504b1d693d7ef500b8a1384bff1901dd7e53fbf"    },    "classes/autoptimizeVersionUpdatesHandler.php": {      "md5": "79ff7f82bd634a6c47e7351a4ed0e2de",      "sha256": "6f50b62c8ab80c5b7f334546b56b855b38337f78c0cb60d8e15d022b6bd7a82e"    },    "classes/critcss-inc/admin_settings_adv.php": {      "md5": "623a61484ad66df65240b555fc0e1e2b",      "sha256": "842cc36aa8b8291df9d93c32855fbf37e3eebaadf59b442336967bdfa75180bf"    },    "classes/critcss-inc/admin_settings_debug.php": {      "md5": "549a0ed67fa85bad9cdcd93d7824635b",      "sha256": "80c2050c00bd092c52eb627b587b12d1028e89a3bc2090976970853951ccc476"    },    "classes/critcss-inc/admin_settings_explain.php": {      "md5": "ecf18d604e3e9208e26c38b2f968ff2e",      "sha256": "3168f2d19f60999a7d8a4480c0b0e91b1a24102fec41629737f2fd527fe9e112"    },    "classes/critcss-inc/admin_settings_impexp.js.php": {      "md5": "163ea78cc7b54a24656f5388807c2f26",      "sha256": "b4092386ce39987b23bb515bab11d0b803a1a71bb6d57d38934041ad6a290d91"    },    "classes/critcss-inc/admin_settings_key.php": {      "md5": "9f58a54f1c6f44a5c3dc887747308d6a",      "sha256": "6f45c21de863b8d247223ea96ae64474d725a20fef4697eb3256cba7700ffbe5"    },    "classes/critcss-inc/admin_settings_queue.js.php": {      "md5": "2bedd84c761996c60f5f7de5c2d3e09e",      "sha256": "7dce89bf433c98a5ff1eb2470894559ed74a0c0673d4dc77ee7434c7d09a64a9"    },    "classes/critcss-inc/admin_settings_queue.php": {      "md5": "242c6d576fa055136e30ccbf0cd915aa",      "sha256": "6e863c244e456dda7d7eb94f76df1e3138ce7e043de817f6582d8530fb31d0c8"    },    "classes/critcss-inc/admin_settings_rules.js.php": {      "md5": "41bcea7946cd6d02773fb714c6478544",      "sha256": "8aa89b1b957fdd10f96a914ed4ba6e574877def154d94069656e3a003146f291"    },    "classes/critcss-inc/admin_settings_rules.php": {      "md5": "9bfdc55c7620611fe667b0ed5454604f",      "sha256": "937339a6e65433353c21b7343847ce5fd2e5f9470c10f199ecafd9889c637a3d"    },    "classes/critcss-inc/css/admin_styles.css": {      "md5": "8baa259e42a4e1d2513a2ff99ad1cf74",      "sha256": "9555bdfdd6571689c7256cadf8308c759f10e996380ccb35321251793a5b50a6"    },    "classes/critcss-inc/css/ao-tablesorter/asc.gif": {      "md5": "05d3db0081998106ce3c56735da19c53",      "sha256": "2986d63c92fe0530ed38c9a575b8a57f30f6e644d133d63a3f7910e7399f9cfd"    },    "classes/critcss-inc/css/ao-tablesorter/bg.gif": {      "md5": "2ee8a6953adc895fbab33a66fa77a0bd",      "sha256": "13b831eab467260b766212f1d71fb31bef4d67df23aca2c444f24788150675bf"    },    "classes/critcss-inc/css/ao-tablesorter/desc.gif": {      "md5": "b0c55062a15066f60d615abf6ec98746",      "sha256": "79ce004c07caa11bd126340afd57ad2104e774a1dbfe9763c0dce67592c2ffeb"    },    "classes/critcss-inc/css/ao-tablesorter/style.css": {      "md5": "669034b0d2dcf76e9d5ac66146a7c925",      "sha256": "7adf54de7dc630ec661e3530bc3541ff46e7a6b9ddd0c3d8aa108fcff96259df"    },    "classes/critcss-inc/js/admin_settings.js": {      "md5": "a5179c478cef924f134f11abb19c282c",      "sha256": "ca58cc54be7d607b4c3fa117589cdda5e3171bb79452dbb5a19f91371bed1071"    },    "classes/critcss-inc/js/jquery.tablesorter.min.js": {      "md5": "f1cc6ebdef9231e4747473f82d7f2c7c",      "sha256": "54bb04a582b2bc4f49575ea153acd8c473509a93fd7bc6ef33a019b15fdf4dad"    },    "classes/critcss-inc/js/md5.min.js": {      "md5": "b24893215933dafef9a250b4a46a602d",      "sha256": "27d221be42096f476245524ecaef8d76d838d5189b16417c79a03ad23763b41f"    },    "classes/external/do_not_donate_smallest.png": {      "md5": "586ba18f1e8e08f25b8117f4db4a0899",      "sha256": "31317f4ab51b098a726d7c37fe4135d4f9380ea343547bfcb8a30e6022ed031f"    },    "classes/external/index.html": {      "md5": "0ec66da07221a6c5f68fc62571a1b7f7",      "sha256": "c9a69e377eea7262984d88d3294f64266a2444726aaa87284f5c13c4613a8f2e"    },    "classes/external/js/index.html": {      "md5": "0ec66da07221a6c5f68fc62571a1b7f7",      "sha256": "c9a69e377eea7262984d88d3294f64266a2444726aaa87284f5c13c4613a8f2e"    },    "classes/external/js/jquery.cookie.js": {      "md5": "f371d4e8cbe6fe960f9e88e755d75ebb",      "sha256": "b16b491962294905e3cff4ac14f45c7da629b5918d5cd77f54d4b97e93316c8f"    },    "classes/external/js/jquery.cookie.min.js": {      "md5": "c0d03ada6aec64f3c178da25331f0a8f",      "sha256": "1cc91511f853cb46fbbfaf1bd9c3c55944fbce7f5b0e02e82906502736c30671"    },    "classes/external/js/lazysizes.min.js": {      "md5": "d1edbffbde50cd32ab770746b4140906",      "sha256": "c4fada4accfa24704b54248bc5ce84acac50b6a059828b7714fe3006786c80c1"    },    "classes/external/js/unslider-dots.css": {      "md5": "3fc3024b132f6a7b81fe535ffffdc5a6",      "sha256": "92b758fa6195848b306a834a4654683aff3f7b747cf5a65c824677e481cd137d"    },    "classes/external/js/unslider.css": {      "md5": "f5c7a42a618f4f6f7e6ea0677b781e46",      "sha256": "e8b6bf8321af1ccd3253e3d6d5d0b65288a9b42ab64fd4ba1bad618eafe96bb3"    },    "classes/external/js/unslider.min.js": {      "md5": "41d6943422aa5dcecad652df78f260a7",      "sha256": "dfe3b7611edf3fbcb1fc8feea9479b017d2c3645596e9e299f6e987beb7c4a18"    },    "classes/external/php/ao-minify-html.php": {      "md5": "a323680c39d2acd5448d8b03fe282226",      "sha256": "d368f65ff455d07f1a0a283bd0ef8deac31602971305ecd2e1f39aa62a2a4a9e"    },    "classes/external/php/index.html": {      "md5": "0ec66da07221a6c5f68fc62571a1b7f7",      "sha256": "c9a69e377eea7262984d88d3294f64266a2444726aaa87284f5c13c4613a8f2e"    },    "classes/external/php/jsmin.php": {      "md5": "5a15a0d9e574ec8c816c4ffc2cc8ad87",      "sha256": "b5ecade31f92cd19f40e535cd173152910e92a2c5575aedb0904e59f366873c1"    },    "classes/external/php/persist-admin-notices-dismissal/README.md": {      "md5": "3a8d0d06b4b8861d3a73a3bac5fe0402",      "sha256": "6a84c07b52cfcb5ac646828f66c67dd062b4100308465437f10ced85b5c388c3"    },    "classes/external/php/persist-admin-notices-dismissal/dismiss-notice.js": {      "md5": "64012407f5f93d41a8d2b5d44783e78e",      "sha256": "e7d8333730ec157d11313255f3f86e2cd0f13906a857e32eee81866b2edbf563"    },    "classes/external/php/persist-admin-notices-dismissal/persist-admin-notices-dismissal.php": {      "md5": "f96be65837b77495538fd0f7d8e506cf",      "sha256": "3d651fff90eba15f5a0ecec752b31307a3cf45d1e8c995572b75fb4f312e3e97"    },    "classes/external/php/yui-php-cssmin-bundled/Colors.php": {      "md5": "96f5364446d60a49a07578c6007212f8",      "sha256": "8241f3aa9fbff6f93a3965cdc57ad234c6eabc4b8ade1cc4ee07b5a4f12121c4"    },    "classes/external/php/yui-php-cssmin-bundled/Minifier.php": {      "md5": "e36c75393edd3c13ea0e6c2a8f735a3f",      "sha256": "99f7cca9ba9a7c8b9d188bc35d989d373df7b1a37533d1dacdee860f5f1d4bda"    },    "classes/external/php/yui-php-cssmin-bundled/Utils.php": {      "md5": "a1991bbd4a186ac386c17b2c8d773eff",      "sha256": "80aca0be7aff734bc0a084da7b3d4c16d1ecd4f8fcfa24d0cb9e0f26b5a16016"    },    "classes/external/php/yui-php-cssmin-bundled/index.html": {      "md5": "0ec66da07221a6c5f68fc62571a1b7f7",      "sha256": "c9a69e377eea7262984d88d3294f64266a2444726aaa87284f5c13c4613a8f2e"    },    "classes/index.html": {      "md5": "114b8f8a1ef61b647770e5157ed8ce16",      "sha256": "cebf5190fbd16eb950d39686d4d91adfbe013af57ed359e59d971b875594d999"    },    "classes/static/exit-survey/exit-survey.css": {      "md5": "142e9ea50bbb5355f333d6bf6b6430e8",      "sha256": "8fab6a78c55fafa7bc01125facad56a2c110f626e6c2ae1cfcb8f0549a02dbea"    },    "classes/static/exit-survey/exit-survey.js": {      "md5": "af4d56930f6d00aeaa5f0d47db6a4c47",      "sha256": "59da3221da1aed73a8fde62914e3646a04d0f1195920467e97873d760ae602dc"    },    "classes/static/loading.gif": {      "md5": "3fe525943d7c65e42cf4eb3b4b8faadc",      "sha256": "a32e6e0f11c0e330c93528577ec3fb05a2b0295555bbdb301a1161e1e5ce0194"    },    "classes/static/toolbar.css": {      "md5": "46026fe300d8b28370edbaee60d6f3ef",      "sha256": "83ccb86844b037ab212b780aec3cfd5b99c8e891684ec26ff33608667fd13e5f"    },    "classes/static/toolbar.js": {      "md5": "75853c230a5698015327421bc68e854c",      "sha256": "5b914081fa55efa384fdbd44cd5b30ab9af9b3f7c84c323e07526ce1d4199ff8"    },    "classes/static/toolbar.min.css": {      "md5": "f0c26e43e07537fe7aeec160c03fdf55",      "sha256": "52f87d70523ad1b71837e4f90cf80ee72b3c4abc43ebc7b3005176248f349ed4"    },    "classes/static/toolbar.min.js": {      "md5": "3487659efc81b19d3d385eeb222cf41d",      "sha256": "8e82bfa65188ed2aaa4971e036b13aa1167f760695971389346037a587ae6a19"    },    "config/autoptimize_404_handler.php": {      "md5": "36c7e6bcf213a60c907be1192ca8363d",      "sha256": "088676e4bf93e3a4b56b1c0d2e40b4606a81d5d9ff8e78c1e01a0c42e509b09f"    },    "config/default.php": {      "md5": "a7bf33b0b73347530d0ef0320e7fdad8",      "sha256": "4c228dc78903b21b4497d88d8fe9639b7fd5127716285a84d0c15b456d4d7cf2"    },    "config/index.html": {      "md5": "114b8f8a1ef61b647770e5157ed8ce16",      "sha256": "cebf5190fbd16eb950d39686d4d91adfbe013af57ed359e59d971b875594d999"    },    "index.html": {      "md5": "114b8f8a1ef61b647770e5157ed8ce16",      "sha256": "cebf5190fbd16eb950d39686d4d91adfbe013af57ed359e59d971b875594d999"    },    "readme.txt": {      "md5": "f3e1ee970629b4930c97cb78846e49a4",      "sha256": "36470540e90472dd37b0bfab07012899493863fa6402a7922ae1a42ef2158f1e"    } },  "zip_mirror": "https://downloads.mycloudflareproxy_domain.com/autoptimize.3.1.12.zip"}

“-1” دير=”auto”> البرنامج المساعد المخزنة مؤقتا

مثال على البرنامج المساعد Cloudflare CDN المخزن مؤقتًا مقارنة بتنزيل البرنامج المساعد WordPress. سيؤدي استخدام التخزين المؤقت لـ Cloudflare CDN إلى تحسين سرعة التنزيل وتحسين زمن الوصول لتنزيلات مكونات WordPress الإضافية وموقع الويب الخاص بك بشكل عام. راجع كتابتي التعليمية المكتوبة على منتدى مجتمع Cloudflare -“https://community.cloudflare.com/t/improving-time-to-first-byte-ttfb-with-cloudflare/390367/” rel=”nofollow”> تحسين وقت البايت الأول (TTFB) باستخدام Cloudflare.

تم تخزين Cloudflare CDN مؤقتًا

حليقة -I https://downloads.mycloudflareproxy_domain.com/autoptimize.3.1.12.zip HTTP/2 200 التاريخ: الخميس، 03 أكتوبر 2024 05:50:14 بتوقيت جرينتش نوع المحتوى: application/zip content-length: 264379 etag : "49dbcac863d2ec3e3ff4675064a943ec"آخر تعديل: الثلاثاء، 01 أكتوبر 2024، 16:06:26 توقيت جرينتش: قبول-تشفير حالة ذاكرة التخزين المؤقت cf: عمر HIT: 4 انتهاء الصلاحية: الأحد، 03 نوفمبر 2024 05:50:14 بتوقيت جرينتش التحكم في ذاكرة التخزين المؤقت: عام، الحد الأقصى -age=2678400 قبول النطاقات: خادم البايت: cloudflare cf-ray: 8ccaa74b58c37cc7-LAX

البرنامج المساعد الأصلي وورد

curl -I https://downloads.wordpress.org/plugin/autoptimize.3.1.12.zip HTTP/1.1 200 OK الخادم: nginx التاريخ: الخميس، 03 أكتوبر 2024 05:48:34 بتوقيت جرينتش نوع المحتوى: application/octet - طول محتوى الدفق: 264379 الاتصال: إغلاق ترتيب المحتوى: المرفق؛ filename=autoptimize.3.1.12.zip آخر تعديل: الخميس، 25 يوليو 2024 17:15:10 بتوقيت جرينتش قبول-النطاقات: بايت طرق التحكم في السماح بالوصول: GET، HEAD Access-Control-Allow-Origin: * Alt -Svc: h3=":443"; ma=86400 X-nc: MISS ord 7

مقارنة”https://github.com/centminmod/curltimes”>curltimes.sh لكليهما

متري يجري Cloudflare CDN (s) WordPress (المواقع) الأصلية الفرق (الفرق) فرق النسبة المئوية (٪)
بحث DNS 1 0.017216 0.012032 -0.005184 -43.09%
2 0.017077 0.012507 -0.004570 -36.55%
3 0.017610 0.012564 -0.005046 -40.17%
متوسط ​​نظام أسماء النطاقات 0.017301 0.012368 -0.004933 -39.89%
يتصل 1 0.018738 0.065434 0.046696 71.39%
2 0.019041 0.066386 0.047345 71.31%
3 0.019858 0.066524 0.046666 70.16%
متوسط ​​الاتصال 0.019212 0.066115 0.046903 71.00%
طبقة المقابس الآمنة 1 0.043311 0.187870 0.144559 76.92%
2 0.042507 0.189180 0.146673 77.53%
3 0.042925 0.189554 0.146629 77.34%
متوسط ​​طبقة المقابس الآمنة 0.042914 0.188868 0.145954 77.27%
TTFB 1 0.100405 0.416238 0.315833 75.86%
2 0.096419 0.248653 0.152234 61.21%
3 0.099871 0.364501 0.264630 72.60%
متوسط ​​TTFB 0.098898 0.343131 0.244233 71.18%
الوقت الإجمالي 1 0.107244 0.665148 0.557904 83.88%
2 0.103766 0.528787 0.425021 80.38%
3 0.108014 0.630060 0.522046 82.86%
متوسط ​​الإجمالي 0.106341 0.607998 0.501657 82.50%

“-1” دير=”auto”>ملاحظات:

  • الأوقات بالثواني (الثواني)
  • تشير الأوقات الأقل إلى أداء أسرع
  • يعد Cloudflare CDN أسرع باستمرار في معظم المقاييس، باستثناء البحث الأولي في DNS
  • متوسط ​​إجمالي تحسين الوقت: 0.501657 ثانية (أسرع بنسبة 82.5% تقريبًا)

“-1” دير=”auto”>التفسير:

  1. بحث DNS: Cloudflare أبطأ قليلاً (بنسبة ~0.005 ثانية أو -39.89%)، ويرجع ذلك على الأرجح إلى دقة Cloudflare DNS الإضافية.
  2. يتصل: Cloudflare أسرع بشكل ملحوظ (بحوالي 0.047 ثانية أو 71.00%)، ربما بسبب قرب الخادم.
  3. طبقة المقابس الآمنة: أداء Cloudflare أفضل بكثير (بنسبة ~0.146 ثانية أو 77.27%)، ويرجع ذلك على الأرجح إلى مصافحة SSL المحسنة.
  4. الوقت حتى البايت الأول (TTFB): Cloudflare أسرع إلى حد كبير (بحوالي 0.244 ثانية أو 71.18%)، مما يشير إلى استجابة أسرع للخادم.
  5. الوقت الإجمالي: يقوم Cloudflare CDN بتسليم الملف بشكل أسرع بكثير (بنسبة ~0.502 ثانية أو 82.50%)، وهو تحسن كبير.

تم تخزين Cloudflare CDN مؤقتًا

./curltimes.sh json https://downloads.mycloudflareproxy_domain.com/autoptimize.3.1.12.zip curl 7.76.1 TLSv1.2 ECDHE-ECDSA-CHACHA20-POLY1305 متصل بالتنزيلات.mycloudflareproxy_domain.com (104.xxx.xxx) .xxx) المنفذ 443 (#0) وكيل Cloudflare https://downloads.mycloudflareproxy_domain.com/autoptimize.3.1.12.zip حجم العينة: 3 DNS، الاتصال، SSL، الانتظار، TTFB، إجمالي الوقت {        "time_dns": 0.017216,        "time_connect": 0.018738,        "time_appconnect": 0.043311,        "time_pretransfer": 0.043366,        "time_ttfb": 0.100405,        "time_total": 0.107244 }{        "time_dns": 0.017077،        "time_connect": 0.019041,        "time_appconnect": 0.042507,        "time_pretransfer": 0.042568,        "time_ttfb": 0.096419,        "time_total": 0.103766 }{        "time_dns": 0.017610,        "time_connect": 0.019858,        "time_appconnect": 0.042925،        "time_pretransfer": 0.042988,        "time_ttfb": 0.099871,        "time_total": 0.108014 }

البرنامج المساعد الأصلي وورد

./curltimes.sh json https://downloads.wordpress.org/plugin/autoptimize.3.1.12.zip TLSv1.2 ECDHE-ECDSA-CHACHA20-POLY1305 متصل بـ downloads.wordpress.org (198.143.164.250) المنفذ 443 ( #0) حجم العينة: 3 DNS، الاتصال، SSL، الانتظار، TTFB، إجمالي الوقت {        "time_dns": 0.012032،        "time_connect": 0.065434,        "time_appconnect": 0.187870,        "time_pretransfer": 0.187953,        "time_ttfb": 0.416238,        "time_total": 0.665148 }{        "time_dns": 0.012507،        "time_connect": 0.066386,        "time_appconnect": 0.189180،        "time_pretransfer": 0.189303،        "time_ttfb": 0.248653,        "time_total": 0.528787 }{        "time_dns": 0.012564,        "time_connect": 0.066524,        "time_appconnect": 0.189554,        "time_pretransfer": 0.189640,        "time_ttfb": 0.364501,        "time_total": 0.630060 }

“-1” دير=”auto”> اختبار سرعة التنزيل wget

مصدر يجري سرعة التنزيل (ميجابايت/ثانية)
كلاودفلير CDN 1 37.8
كلاودفلير CDN 2 46.8
WordPress.org 1 0.9
WordPress.org 2 1.05

تم تخزين Cloudflare CDN مؤقتًا

التشغيل 1=37.8 ميجابايت/ثانية

التشغيل 2=46.8 ميجابايت/ثانية

البرنامج المساعد الأصلي وورد

التشغيل 1=900 كيلو بايت/ثانية

التشغيل 2=1.05 ميجابايت/ثانية

بالنظر عن كثب إلى تنزيل WordPress.org، لست متأكدًا حتى من قيامهم بالتخزين المؤقت لملفات المكونات الإضافية التي يخدمونها بشكل صحيح؟ يبدو أن التخزين المؤقت لكل مركز بيانات حيث كان الاختبار الأخير عبارة عن نتيجة – على الرغم من عدم وجود اختلاف في سرعة التنزيل. لقد قمت بإجراء 4 عمليات تشغيل إضافية لفحص رؤوس استجابة HTTP وأرى، EXPIRED, MISS, MISS, HIT الحالات على التوالي ل x-nc header.

]258.18 كيلو بايت 875 كيلو بايت/ثانية في 0.3 ثانية 2024-10-03 11:10:18 (875 كيلو بايت/ثانية) – تم حفظ ‘/dev/null’ [264379/264379]”>

wget -S -O /dev/null https://downloads.wordpress.org/plugin/autoptimize.3.1.12.zip --2024-10-03 11:10:17-- https://downloads.wordpress. org/plugin/autoptimize.3.1.12.zip جارٍ حل downloads.wordpress.org (downloads.wordpress.org)... 198.143.164.250 الاتصال بـ downloads.wordpress.org (downloads.wordpress.org)|198.143.164.250|: 443...متصل. تم إرسال طلب HTTP، في انتظار الرد... HTTP/1.1 200 OK الخادم: nginx التاريخ: الخميس، 03 أكتوبر 2024 11:10:18 بتوقيت جرينتش نوع المحتوى: تطبيق/octet-stream طول المحتوى: 264379 الاتصال: إغلاق ترتيب المحتوى : مرفق؛ filename=autoptimize.3.1.12.zip آخر تعديل: الخميس، 25 يوليو 2024 17:15:10 بتوقيت جرينتش طرق-التحكم-السماح: GET، HEAD Access-Control-Allow-Origin: * Alt-Svc: h3=":443"; ma=86400 X-nc: أمر منتهي الصلاحية 7 نطاقات القبول: طول البايت: 264379 (258 كيلو بايت) [application/octet-stream]الحفظ في: '/dev/null' /dev/null 100%[==================================================================================================>] 258.18K 875 كيلو بايت/ثانية في 0.3 ثانية 2024-10-03 11:10:18 (875 كيلو بايت/ثانية) - تم حفظ '/dev/null' [264379/264379]
]258.18K 933 كيلو بايت/ثانية في 0.3 ثانية 2024-10-03 11:10:22 (933 كيلو بايت/ثانية) – تم حفظ ‘/dev/null’ [264379/264379]”>

wget -S -O /dev/null https://downloads.wordpress.org/plugin/autoptimize.3.1.12.zip --2024-10-03 11:10:21-- https://downloads.wordpress. org/plugin/autoptimize.3.1.12.zip جارٍ حل downloads.wordpress.org (downloads.wordpress.org)... 198.143.164.250 الاتصال بـ downloads.wordpress.org (downloads.wordpress.org)|198.143.164.250|: 443...متصل. تم إرسال طلب HTTP، في انتظار الرد... HTTP/1.1 200 OK الخادم: nginx التاريخ: الخميس، 03 أكتوبر 2024 11:10:21 بتوقيت جرينتش نوع المحتوى: تطبيق/octet-stream طول المحتوى: 264379 الاتصال: إغلاق ترتيب المحتوى : مرفق؛ filename=autoptimize.3.1.12.zip آخر تعديل: الخميس، 25 يوليو 2024 17:15:10 بتوقيت جرينتش قبول-النطاقات: بايت طرق التحكم في السماح بالوصول: GET، HEAD Access-Control-Allow-Origin: * Alt -Svc: h3=":443"; ma=86400 X-nc: MISS ord 4 الطول: 264379 (258 كيلو) [application/octet-stream]الحفظ في: '/dev/null' /dev/null 100%[==================================================================================================>] 258.18K 933 كيلو بايت/ثانية في 0.3 ثانية 2024-10-03 11:10:22 (933 كيلو بايت/ثانية) - تم حفظ '/dev/null' [264379/264379]
]258.18K 1.03 ميجابايت/ثانية في 0.2 ثانية 2024-10-03 11:10:24 (1.03 ميجابايت/ثانية) – تم حفظ ‘/dev/null’ [264379/264379]”>

wget -S -O /dev/null https://downloads.wordpress.org/plugin/autoptimize.3.1.12.zip --2024-10-03 11:10:23-- https://downloads.wordpress. org/plugin/autoptimize.3.1.12.zip جارٍ حل downloads.wordpress.org (downloads.wordpress.org)... 198.143.164.250 الاتصال بـ downloads.wordpress.org (downloads.wordpress.org)|198.143.164.250|: 443...متصل. تم إرسال طلب HTTP، في انتظار الرد... HTTP/1.1 200 OK الخادم: nginx التاريخ: الخميس، 03 أكتوبر 2024 11:10:24 بتوقيت جرينتش نوع المحتوى: تطبيق/octet-stream طول المحتوى: 264379 الاتصال: إغلاق ترتيب المحتوى : مرفق؛ filename=autoptimize.3.1.12.zip آخر تعديل: الخميس، 25 يوليو 2024 17:15:10 بتوقيت جرينتش قبول-النطاقات: بايت طرق التحكم في السماح بالوصول: GET، HEAD Access-Control-Allow-Origin: * Alt -Svc: h3=":443"; ma=86400 X-nc: MISS ord 6 الطول: 264379 (258 كيلو) [application/octet-stream]الحفظ في: '/dev/null' /dev/null 100%[==================================================================================================>] 258.18K 1.03 ميجابايت/ثانية في 0.2 ثانية 2024-10-03 11:10:24 (1.03 ميجابايت/ثانية) - تم حفظ '/dev/null' [264379/264379]
]258.18 كيلو بايت 1.05 ميجابايت/ثانية في 0.2 ثانية 2024-10-03 11:13:29 (1.05 ميجابايت/ثانية) – تم حفظ ‘/dev/null’ [264379/264379]”>

wget -S -O /dev/null https://downloads.wordpress.org/plugin/autoptimize.3.1.12.zip --2024-10-03 11:13:29-- https://downloads.wordpress. org/plugin/autoptimize.3.1.12.zip جارٍ حل downloads.wordpress.org (downloads.wordpress.org)... 198.143.164.250 الاتصال بـ downloads.wordpress.org (downloads.wordpress.org)|198.143.164.250|: 443...متصل. تم إرسال طلب HTTP، في انتظار الرد... HTTP/1.1 200 OK الخادم: nginx التاريخ: الخميس، 03 أكتوبر 2024 11:13:29 بتوقيت جرينتش نوع المحتوى: تطبيق/octet-stream طول المحتوى: 264379 الاتصال: إغلاق ترتيب المحتوى : مرفق؛ filename=autoptimize.3.1.12.zip آخر تعديل: الخميس، 25 يوليو 2024 17:15:10 بتوقيت جرينتش طرق-التحكم-السماح: GET، HEAD Access-Control-Allow-Origin: * Alt-Svc: h3=":443"; ma=86400 X-nc: HIT ord 7 نطاقات القبول: طول البايت: 264379 (258 كيلو بايت) [application/octet-stream]الحفظ في: '/dev/null' /dev/null 100%[==================================================================================================>] 258.18K 1.05 ميجابايت/ثانية في 0.2 ثانية 2024-10-03 11:13:29 (1.05 ميجابايت/ثانية) - تم حفظ '/dev/null' [264379/264379]

“-1” دير=”auto”> نقطة نهاية واجهة برمجة تطبيقات WordPress الإضافية

تم نسخها وتخزينها مؤقتًا محليًا في البيانات الوصفية JSON للمكون الإضافي لـ Cloudflare R2 حيث api.mycloudflareproxy_domain.com هو اسم مضيف منطقة المجال الذي تم تمكين وكيل Cloudflare orange cloud له الوصول العام لحاوية Cloudflare R2 WP_PLUGIN_INFO دلو المشار إليه في Cloudflare Worker ذلك get_plugins_r2.sh يتحدث إلى.

  • معكوسة المحلية: https://api.mycloudflareproxy_domain.com/plugins/info/1.0/autoptimize.json
  • نقطة نهاية واجهة برمجة تطبيقات WordPress الأصلية: https://api.wordpress.org/plugins/info/1.0/autoptimize.json

تم أيضًا تعديل بيانات تعريف JSON المحفوظة لإدراج حقل إضافي لها download_link_mirror والذي يسرد أيضًا عنوان URL للتنزيل المتطابق لمكون WordPress الإضافي بالإضافة إلى عنوان URL الموجود download_link رابط التحميل.

حليقة -s https://api.mycloudflareproxy_domain.com/plugi ns/info/1.0/autoptimize.json | جق -ص '[.download_link, .download_link_mirror]'[  "https://downloads.wordpress.org/plugin/autoptimize.3.1.12.zip",  "https://downloads.mycloudflareproxy_domain.com/autoptimize.3.1.12.zip"]

نقطة نهاية بيانات تعريف JSON المتطابقة والمخزنة محليًا https://api.mycloudflareproxy_domain.com/plugins/info/1.0/ يتم استخدامه أيضًا بشكل اختياري كعنوان URL للبيانات المصدر مع ملف WordPress Plugin 1.2 API Bridge Worker الذي تم إنشاؤه باستخدام Cloudflare Worker منفصل. إنه مصمم لسد الفجوة بين إصداري WordPress Plugin API 1.0 و1.2 https://api.wordpress.org/plugins/info/1.0 مقابل https://api.wordpress.org/plugins/info/1.2. فهو يسمح للعملاء بالاستعلام عن معلومات المكونات الإضافية باستخدام تنسيق 1.2 API أثناء جلب البيانات إما من نقطة نهاية 1.0 API المعكوسة أو واجهة برمجة تطبيقات WordPress.org 1.0 الرسمية، مما يوفر المرونة والموثوقية في استرجاع البيانات

curl -s -H "قبول: التطبيق/json" "https://api.mycloudflareproxy_domain.com/plugins/info/1.2/?action=plugin_information&slug=autoptimize&locale=en_US" | جي كيو -ر '[.name, .slug, .version, .download_link, .tested, .requires_php]'[  "Autoptimize",  "autoptimize",  "3.1.12",  "https://downloads.wordpress.org/plugin/autoptimize.3.1.12.zip",  "6.6.2",  "5.6"]

بيانات تعريف JSON الإضافية الكاملة لبرنامج WordPress:

curl -s https://api.mycloudflareproxy_domain.com/plugins/info/1.0/autoptimize.json | jq -r
فرانك جوسينز (فوتا)”, “Author_profile”: “https://profiles.wordpress.org/optimizingmatters/”, “يتطلب”: “5.3”, “تم اختباره”: “6.6.2”, “يتطلب_php”: “5.6”, “require_plugins”: [], “التوافق”: [], “تصنيف”: 94، “التقييمات”: { “5”: 1275، “4”: 34، “3”: 21، “2”: 20، “1”: 61 }, “num_rated”: 1411، “support_threads”: 23، “support_threads_resolved”: 21، “تم تنزيله”: 40110102, “last_updated”: “2024-07-25 5:22 مساءً بتوقيت جرينتش”, “وأضاف”: “2009-07-09”, “الصفحة الرئيسية”: “https://autoptimize.com/pro/”, “أقسام”: { “وصف”: “

التحسين التلقائي يجعل تحسين موقعك أمرًا سهلاً حقًا. يمكنه تجميع البرامج النصية والأنماط وتصغيرها وتخزينها مؤقتًا، وإدخال CSS في رأس الصفحة بشكل افتراضي، ولكن يمكنه أيضًا تضمين CSS المهم وتأجيل CSS الكامل المجمع، ونقل البرامج النصية وتأجيلها إلى التذييل وتقليل HTML. يمكنك تحسين الصور وتحميلها ببطء (مع دعم تنسيقات WebP وAVIF)، وتحسين خطوط Google، وجافا سكريبت غير المتزامن غير المجمع، وإزالة رموز تعبيرية WordPress الأساسية والمزيد. على هذا النحو، يمكنه تحسين أداء موقعك حتى عندما يكون موجودًا بالفعل على HTTP/2! تتوفر واجهة برمجة تطبيقات واسعة النطاق لتمكينك من تخصيص التحسين التلقائي ليناسب الاحتياجات المحددة لكل موقع.
nإذا كنت تعتقد أن الأداء مهم بالفعل، فيجب عليك على الأقل أن تفكر في أحد المكونات الإضافية المجانية العديدة للتخزين المؤقت للصفحات (على سبيل المثال حزمة تعزيز السرعة أو أداة تمكين ذاكرة التخزين المؤقت لـ KeyCDN) لاستكمال التحسين التلقائي أو حتى فكر في Autoptimize Pro والتي لا تحتوي فقط على التخزين المؤقت للصفحة ولكن أيضًا تحسين الصورة وCDN وCSS المهمة والمزيد!

n

n

التحسين التلقائي برو
n يعد Autoptimize Pro بمثابة ميزة Power-Up متميزةوإضافة تحسين الصورة وCDN والتخزين المؤقت للصفحة وقواعد CSS المهمة التلقائية وخيارات “معززة” إضافية، كل ذلك في اشتراك واحد سهل الاستخدام في اجعل موقعك أسرع!!

n

دعم متميز
n نحن نقدم خدمات رائعة خدمات الدعم المتميز وتحسين أداء الويب مع Accelera، تحقق من عروضنا على https://accelerawp.com/!

n

n

(صورة التصفح السريع تحت المشاع الإبداعي بواسطة إل إل تويستيتي)

n”, “تثبيت”: “

ما عليك سوى التثبيت من WordPress “Plugins> إضافة جديد” الشاشة وكل شيء سيكون على ما يرام. التثبيت اليدوي واضح جدًا أيضًا:

n

    n

  1. قم بتحميل الملف المضغوط وفك ضغطه في ملف /wp-content/plugins/ دليل
  2. n

  3. قم بتفعيل الإضافة من خلال ‘الإضافات’ القائمة في ووردبريس
  4. n

  5. اذهب الى Settings > Autoptimize وتمكين الخيارات التي تريدها. بشكل عام، هذا يعني “تحسين HTML/ CSS/ JavaScript”.
  6. n

n”, “التعليمات”: “n

nما الذي يفعله البرنامج الإضافي للمساعدة في تسريع موقعي؟nn

n

فهو يقلل من جميع البرامج النصية والأنماط ويقوم بتكوين خادم الويب الخاص بك لضغطها برؤوس انتهاء صلاحية جيدة. سيتم جعل JavaScript افتراضيًا غير محظور للعرض ويمكن أن يكون CSS أيضًا عن طريق إضافة CSS المهمة. يمكنك تكوينه لدمج (تجميع) CSS & ملفات JS، وفي هذه الحالة يتم نقل الأنماط إلى رأس الصفحة، والبرامج النصية إلى تذييل الصفحة. كما أنه يعمل أيضًا على تصغير كود HTML ويمكنه أيضًا تحسين الصور وخطوط Google، مما يجعل صفحتك خفيفة الوزن حقًا.

nn

nلكنني أستخدم HTTP/2، لذا لا أحتاج إلى التحسين التلقائي؟nn

n

يعد HTTP/2 خطوة رائعة للأمام بالتأكيد، حيث يقلل من تأثير الطلبات المتعددة من نفس الخادم بشكل كبير عن طريق استخدام نفس الاتصال لتنفيذ العديد من الطلبات المتزامنة ولهذا السبب في عمليات التثبيت الجديدة، لن يقوم Autoptimize بتجميع ملفات CSS وJS بعد الآن. يقال ذلك ، لا يزال من الممكن أن يكون لتسلسل CSS/JS معنى كبير، كما هو موضح في هذه المقالة CSS-tricks.com وهذا مدونة من أحد مهندسي موقع Ebay. الاستنتاج؛ قم بالتكوين، والاختبار، وإعادة التكوين، وإعادة الاختبار، والتعديل، وابحث عن ما يعمل بشكل أفضل في السياق الخاص بك. ربما يكون مجرد HTTP/2، وربما يكون HTTP/2 + تجميعًا وتصغيرًا، وربما يكون تصغير HTTP/2 + (وهو ما يمكن لـ AO القيام به أيضًا، ما عليك سوى إلغاء تحديد “ ؛ خيارات ملفات JS المجمعة و/أو خيارات ملفات CSS المجمعة). ويمكن للتحسين التلقائي أن يفعل الكثير أكثر من مجرد “فقط”. تحسين JS & CSS خارج المسار 😉

nn

nهل سيعمل هذا مع مدونتي؟nn

n

على الرغم من أن Autoptimize يأتي دون أي ضمانات، إلا أنه بشكل عام سيعمل بشكل لا تشوبه شائبة إذا قمت بتكوينه بشكل صحيح. راجع “استكشاف الأخطاء وإصلاحها” أدناه للحصول على معلومات حول كيفية التكوين في حالة حدوث مشاكل. إذا كنت تريد يمكنك اختبر Autoptimize على موقع وهمي مجاني جديد، من موقع Tastewp.com.

nn

nلماذا لم يتم تحسين jquery.min.js عند تجميع JavaScript؟nn

n

بدءًا من AO 2.1، لم يتم تحسين jquery.min.js الخاص بـ WordPress لسبب بسيط، حيث تقوم الكثير من المكونات الإضافية الشائعة بإدخال JS المضمّن الذي لم يتم تجميعه أيضًا (بسبب مشكلات محتملة في حجم ذاكرة التخزين المؤقت مع تعليمات برمجية فريدة في JS المضمنة) والتي يعتمد على توفر jquery، لذا فإن استبعاد jquery.min.js يضمن أن معظم المواقع ستعمل خارج الصندوق. إذا كنت تريد تحسين jquery أيضًا، فيمكنك إزالته من قائمة استبعاد تحسين JS (قد يتعين عليك تمكين “تجميع JS المضمن أيضًا” أيضًا أو التبديل إلى “فرض JS في الرأس” 8221؛).

nn

nلماذا يتم حظر عرض Autoptimized JS؟nn

n

يحدث هذا عند تجميع JavaSCript ووضع علامة على “القوة في الرأس”؛ الخيار أو عند عدم التجميع وعدم التأجيل. فكر في تغيير الإعدادات.

nn

nلماذا لا يزال يتم استدعاء CSS المحسّن تلقائيًا كحظر عرض؟nn

n

من خلال التكوين الافتراضي للتحسين التلقائي، يتم ربط CSS في الرأس، وهو إعداد افتراضي آمن ولكنه يشكو من Google PageSpeed ​​Insights. يمكنك البحث في “مضمنة كافة CSS” (سهل) أو “مضمّن وتأجيل CSS” (أفضل) والتي تم شرحها في هذه الأسئلة الشائعة أيضًا.

nn

nما فائدة “التضمين وتأجيل CSS”؟nn

n

يجب وضع CSS بشكل عام في رأس المستند. بدأت Google مؤخرًا في الترويج لتأجيل CSS غير الضروري، مع تضمين تلك الأنماط اللازمة لإنشاء الصفحة في الجزء المرئي من الصفحة. وهذا مهم بشكل خاص لعرض الصفحات في أسرع وقت ممكن على الأجهزة المحمولة. اعتبارًا من Autoptimize 1.9.0 أصبح هذا أمرًا سهلاً؛ حدد “مضمّن وتأجيل CSS”، ثم الصق الكتلة “فوق الطية CSS” في حقل الإدخال (منطقة النص) وأنت على ما يرام!

nn

nولكن كيف يمكن للمرء معرفة ما هو موجود في “الجزء المرئي من CSS” هو؟nn

n

لا يوجد حل سهل لذلك كما هو الحال في “الجزء المرئي من الصفحة” يعتمد على مكان الطية، والذي يعتمد بدوره على حجم الشاشة. ومع ذلك، هناك بعض الأدوات المتاحة، والتي تحاول تحديد ما هو “فوق الجزء المرئي” فقط. هذه القائمة من الأدوات هي نقطة انطلاق عظيمة. ال Sitelocity مولد CSS الحرجة و مولد المسارات الحرجة لجوناس أولسون هي حلول أساسية لطيفة و http://criticalcss.com/ هو حل متميز من نفس جوناس أولسون. بدلاً عن ذلك هذه الإشارة المرجعية (Chrome فقط) يمكن أن يكون مفيدًا أيضًا.

nn

nأو هل ينبغي عليك تضمين كافة صفحات CSS؟nn

n

الجواب القصير: ربما لا. على الرغم من أن تضمين كل CSS سيؤدي إلى منع عرض CSS، إلا أنه سيؤدي إلى زيادة حجم صفحة HTML الأساسية بشكل ملحوظ وبالتالي يتطلب المزيد من “أوقات الذهاب والإياب”. علاوة على ذلك، عند النظر في طلب صفحات متعددة في جلسة التصفح، يتم إرسال CSS المضمن في كل مرة، بينما عندما لا يتم تضمينه، سيتم تقديمه من ذاكرة التخزين المؤقت. وأخيرًا، سيدفع CSS المضمن العلامات الوصفية في HTML إلى موضع قد لا يبحث عنه Facebook أو Whatsapp بعد الآن، مما يؤدي إلى كسر الصور المصغرة على سبيل المثال عند المشاركة على هذه الأنظمة الأساسية.

nn

nأصبحت ذاكرة التخزين المؤقت ضخمة للغاية، ألا تقوم ميزة التحسين التلقائي بإزالة ذاكرة التخزين المؤقت؟nn

n

التحسين التلقائي لا يملك آلية تطهير ذاكرة التخزين المؤقت المناسبة، حيث قد يؤدي ذلك إلى إزالة CSS/JS المحسّن الذي لا يزال يشار إليه في ذاكرات التخزين المؤقت الأخرى، مما قد يؤدي إلى تعطيل موقعك. علاوة على ذلك، فإن ذاكرة التخزين المؤقت سريعة النمو تعد مؤشرًا على ذلك مشاكل أخرى يجب عليك تجنبها.

n

بدلاً من ذلك، يمكنك الاحتفاظ بحجم ذاكرة التخزين المؤقت عند مستوى مقبول إما عن طريق:

n

    n

  • إلغاء تنشيط “التجميع المضمن JS” و/أو “تجميع CSS المضمّن” خيارات
  • n

  • باستثناء متغيرات JS (أو في بعض الأحيان محددات CSS) التي تتغير على أساس كل صفحة (أو لكل تحميل صفحة). يمكنك أن تقرأ كيف يمكنك أن تفعل ذلك في هذه المدونة.
  • n

n

على الرغم من الاعتراضات المذكورة أعلاه، هناك حلول تابعة لجهات خارجية لتطهير ذاكرة التخزين المؤقت AO تلقائيًا، على سبيل المثال باستخدام هذا الرمز أو هذا البرنامج المساعدولكن للأسباب المذكورة أعلاه، يجب استخدامها فقط إذا كنت تعرف حقًا ما تفعله.

nn

n“مسح ذاكرة التخزين المؤقت” لا يبدو أنه يعمل؟nn

n

عند النقر فوق “حذف ذاكرة التخزين المؤقت” في القائمة المنسدلة “التحسين التلقائي” في شريط أدوات المسؤول، قد تحصل على رسالة “ربما لم تتم إزالة ذاكرة التخزين المؤقت بنجاح”. في هذه الحالة، انتقل إلى صفحة إعداد التحسين التلقائي وانقر فوق “حفظ التغييرات&” مسح ذاكرة التخزين المؤقت”-زر.

n

علاوة على ذلك، لا تقلق إذا لم تنخفض ذاكرة التخزين المؤقت لديك مطلقًا إلى 0 ملف/0 كيلو بايت، حيث سيقوم Autoptimize (اعتبارًا من الإصدار 2.2) بتحميل ذاكرة التخزين المؤقت تلقائيًا فورًا بعد مسحها لتسريع عملية التصغير بشكل أكبر.

nn

nيبدو موقعي معطلاً عندما أقوم بإزالة ذاكرة التخزين المؤقت الخاصة بـ Autoptimize!nn

n

عند مسح ذاكرة التخزين المؤقت لـ AO، يجب ألا تحتوي ذاكرة التخزين المؤقت للصفحة على صفحات (HTML) تشير إلى CSS/JS المحسّن الذي تمت إزالته. على الرغم من وجود تكامل لهذا الغرض بين Autoptimize وبعض ذاكرات التخزين المؤقت للصفحات، إلا أن هذا التكامل لا يغطي 100% من عمليات الإعداد، لذا قد تحتاج إلى مسح ذاكرة التخزين المؤقت لصفحتك يدويًا.

nn

nهل لا يزال بإمكاني استخدام Rocket Loader من Cloudflare؟nn

n

يعد Cloudflare Rocket Loader طريقة متقدمة جدًا ولكنها جائرة لجعل جافا سكريبت غير محظورة، والتي لا تزال Cloudflare تدرس الإصدار التجريبي. في بعض الأحيان التحسين & تعمل Rocket Loader معًا، وأحيانًا لا تفعل ذلك. أفضل طريقة هي تعطيل Rocket Loader، وتكوين Autoptimize وإعادة تمكين Rocket Loader (إذا كنت تعتقد أنه يمكن أن يساعد) بعد ذلك واختبار ما إذا كان كل شيء لا يزال يعمل.

n

في الوقت الحالي (يونيو 2017) يبدو أن RocketLoader قد يكسر AO’s “inline &” تأجيل CSS”، والذي يعتمد على تحميل Filamentgroup’s CSS، مما أدى إلى عدم تحميل CSS المؤجل.

nn

nلقد حاولت التحسين التلقائي لكن نتيجة Google Pagespeed لم تتحسن إلا بالكادnn

n

التحسين التلقائي ليس مجرد حل بسيط لـ “إصلاح مشكلات سرعة الصفحة” الخاصة بي. البرنامج المساعد. انها “فقط” المجاميع & تصغير (محلي) JS & CSS والصور ويسمح ببعض الإضافات الرائعة مثل إزالة خطوط Google وتأجيل تحميل CSS. على هذا النحو، سيسمح لك Autoptimize بتحسين أدائك (يتم قياس وقت التحميل بالثواني) وربما يساعدك أيضًا على معالجة بعض تحذيرات Pagespeed المحددة. إذا كنت ترغب في المزيد من التحسين، فربما يتعين عليك أيضًا النظر في التخزين المؤقت للصفحة وتكوين خادم الويب الخاص بك، مما سيؤدي إلى تحسين الأداء الحقيقي (مرة أخرى، وقت التحميل كما تم قياسه على سبيل المثال https://webpagetest.org) و“ الخاص بك ;أفضل ممارسات الأداء” تقييمات سرعة الصفحة.

nn

nماذا يمكنني أن أفعل بواجهة برمجة التطبيقات (API)؟nn

n

الكثير؛ هناك عوامل تصفية يمكنك استخدامها لتعطيل التحسين التلقائي لكل طلب بشكل مشروط، ولتغيير استثناءات CSS وJS، ولتغيير الحد الأقصى لصور خلفية CSS التي سيتم تضمينها في CSS، ولتحديد ملفات JS التي سيتم نقلها خلف المجموعة المجمعة واحد، لتغيير سمة التأجيل في علامة البرنامج النصي JS المجمعة، … توجد أمثلة لبعض المرشحات في autoptimize_helper.php_example وفي هذه الأسئلة الشائعة.

nn

nكيف يعمل CDN؟nn

n

بدءًا من الإصدار 1.7.0، يتم تنشيط CDN عند الدخول إلى الدليل الجذر لمدونة CDN (على سبيل المثال http://cdn.example.net/wordpress/). إذا كان عنوان URL هذا موجودًا، فسيتم استخدامه لجميع الملفات التي تم إنشاؤها بواسطة Autoptimize (أي CSS وJS المجمعة)، بما في ذلك صور الخلفية في CSS (عند عدم استخدام معرفات البيانات).

n

إذا كنت تريد أن تكون صورك التي تم تحميلها على CDN أيضًا، فيمكنك تغيير upload_url_path في تكوين WordPress الخاص بك (/wp-admin/options.php) إلى دليل تحميل CDN المستهدف (على سبيل المثال http://cdn.example.net /ووردبريس/wp-content/uploads/). ضع في اعتبارك أن هذا لا يعمل إلا مع الصور التي تم تحميلها من تلك النقطة فصاعدًا، وليس مع الصور التي تم تحميلها بالفعل. شكرا ل BeautyPirate للحصول على معلومات!

nn

nلماذا لا يتم وضع الخطوط الخاصة بي على CDN أيضًا؟nn

n

يدعم التحسين التلقائي هذا، ولكن لا يتم تمكينه افتراضيًا بسبب قد تتطلب الخطوط غير المحلية بعض التكوينات الإضافية. ولكن إذا كانت لديك سياسة الطلب عبر الأصل مرتبة، فيمكنك إخبار Autoptimize بوضع خطوطك على CDN عن طريق الربط بواجهة برمجة التطبيقات (API)، وإعداد autoptimize_filter_css_fonts_cdn ل true من هنا؛

n

add_filter( 'autoptimize_filter_css_fonts_cdn', '__return_true' );n

nn

nأنا أستخدم Cloudflare، ما الذي يجب أن أدخله كدليل جذر CDNnn

n

لا شيء، عندما تكون على Cloudflare، يكون CSS/JS المحسّن تلقائيًا على CDN الخاص بـ Cloudflare تلقائيًا.

nn

nكيف يمكنني إجبار الملفات المجمعة على أن تكون ثابتة CSS أو JS بدلاً من PHP؟nn

n

إذا تم تكوين خادم الويب الخاص بك بشكل صحيح للتعامل مع الضغط (gzip أو deflate) وانتهاء ذاكرة التخزين المؤقت (انتهاء الصلاحية والتحكم في ذاكرة التخزين المؤقت مع إمكانية تخزين مؤقت كافية)، فلن تحتاج إلى Autoptimize للتعامل مع ذلك نيابةً عنك. في هذه الحالة، يمكنك تحديد خيار “حفظ البرنامج النصي/css المجمع كملفات ثابتة؟”، والذي سيفرض على Autoptimize حفظ الملفات المجمعة كملفات ‎.css و.js (مما يعني عدم الحاجة إلى PHP لخدمة هذه الملفات). يعد هذا الإعداد افتراضيًا اعتبارًا من Autoptimize 1.8.

nn

nكيف يتم “الاستبعاد من التحسين”؟ العمل؟nn

n

يمكن لتحسين كل من CSS وJS تخطي التعليمات البرمجية من التجميع والتصغير عن طريق إضافة “المعرفات”؛ إلى قائمة الاستبعاد المفصولة بفواصل. يمكن تحديد سلسلة المعرف الدقيقة التي سيتم استخدامها بهذه الطريقة:

n

    n

  • إذا كنت تريد استبعاد ملف معين، على سبيل المثال wp-content/plugins/funkyplugin/css/style.css، فيمكنك ببساطة استبعاد “funkyplugin/css/style.css”
  • n

  • إذا كنت تريد استبعاد جميع ملفات مكون إضافي معين، على سبيل المثال wp-content/plugins/funkyplugin/js/*، فيمكنك استبعاد على سبيل المثال “funkyplugin/js/” أو “المكونات الإضافية/funkyplugin”
  • n

  • إذا كنت تريد استبعاد التعليمات البرمجية المضمنة، فسيتعين عليك العثور على سلسلة محددة وفريدة من نوعها في مجموعة التعليمات البرمجية هذه وإضافتها إلى قائمة الاستبعاد. مثال: استبعاد ، المعرف هو “funky_data”.
  • n

nn

nاستكشاف أخطاء التحسين التلقائي وإصلاحهاnn

n

قم بإلقاء نظرة على تعليمات استكشاف الأخطاء وإصلاحها على https://blog.futtta.be/2022/05/05/what-to-do-when-autoptimize-breaks-your-site/

nn

nلقد قمت باستبعاد الملفات ولكن لا يزال يتم تحسينها تلقائيًا؟nn

n

يقوم AO بتصغير JS/CSS المستبعد إذا كان اسم الملف يشير إلى أن الملف لم يتم تصغيره بعد. اعتبارًا من AO 2.5، يمكنك تعطيل هذا على “JS وCSS & HTML”-علامة التبويب ضمن Misc. الخيارات عن طريق إلغاء تحديد “تصغير الملفات المستبعدة”.

nn

nمساعدة، لدي صفحة فارغة أو خطأ داخلي في الخادم بعد تمكين Autoptimize!!nn

n

تأكد من أنك لا تقوم بتشغيل مكونات إضافية أخرى للتصغير بتنسيق HTML أو CSS أو JS (BWP minify، WP miniify، …) في وقت واحد مع Autoptimize أو تعطيل هذه الوظيفة، المكون الإضافي للتخزين المؤقت لصفحتك (W3 Total Cache، WP Fastest Cache، & #8230؛). حاول تمكين تحسين CSS فقط أو تحسين JS فقط لمعرفة أيهما يسبب خطأ الخادم واتبع الخطوات العامة لاستكشاف الأخطاء وإصلاحها للعثور على حل بديل.

nn

nلكن لا يزال لدي ملفات CSS أو JS فارغة ومُحسَّنة تلقائياً!nn

n

إذا كنت تقوم بتشغيل Apache، فإن ملف .htaccess المكتوب بواسطة Autoptimize يمكن أن يتعارض في بعض الحالات مع إعداداتallowOverrides لتكوين Apache الخاص بك (كما هو الحال مع التكوين الافتراضي لبعض عمليات تثبيت Ubuntu)، مما يؤدي إلى “خادم داخلي” أخطاء” على التحسين التلقائي لملفات CSS وJS. يمكن حل هذا عن طريق إعداد السماح بالتجاوزات على الكل.

nn

nلا يمكن تسجيل الدخول إلى المواقع المتعددة المعينة للمجالnn

n

تتطلب المواقع المتعددة المعينة للنطاق تهيئة Autoptimize في إجراء WordPress مختلف، أضف هذا السطر من التعليمات البرمجية إلى wp-config.php الخاص بك لجعله مناسبًا للربط setup_theme على سبيل المثال:

n

define( 'AUTOPTIMIZE_SETUP_INITHOOK', 'setup_theme' );n

nn

nلم أحصل على أي خطأ، ولكن لم يتم تحسين صفحاتي على الإطلاق؟nn

n

يقوم التحسين التلقائي بإجراء عدد من عمليات التحقق قبل التحسين الفعلي. عندما ينطبق أي مما يلي، لن يتم تحسين صفحاتك:

n

    n

  • عندما تكون في أداة التخصيص
  • n

  • إذا لم يكن هناك فتح علامة
  • n

  • إذا كان هناك في الاستجابة (يشير إلى أن الإخراج ليس HTML بل XML)
  • n

  • إذا كان هناك في الاستجابة (حيث تم تحسين صفحات AMP بالفعل)
  • n

  • إذا كان الإخراج عبارة عن موجز RSS (وظيفة is_feed())
  • n

  • إذا كان الإخراج عبارة عن صفحة إدارة WordPress (وظيفة is_admin())
  • n

  • إذا تم طلب الصفحة مع إلحاق ?ao_noptimize=1 بعنوان URL
  • n

  • إذا تم ربط التعليمات البرمجية بـ Autoptimize لتعطيل التحسين (راجع الموضوع الخاص بـ Visual Composer)
  • n

  • إذا كانت المكونات الإضافية الأخرى تستخدم المخزن المؤقت للإخراج بطريقة غير متوافقة (قم بتعطيل المكونات الإضافية الأخرى بشكل انتقائي لتحديد السبب)
  • n

nn

nVisual Composer وBeaver Builder وحلول إنشاء الصفحات المشابهة معطلة!!nn

n

قم بتعطيل خيار تنشيط Autoptimize للمستخدمين الذين قاموا بتسجيل الدخول وقم بالسحب والإسقاط بشكل مجنون 😉

nn

nالمساعدة، الدفع/الدفع في متجري لا يعمل!!nn

n

قم بتعطيل خيار تحسين صفحات سلة التسوق/الخروج (يعمل مع WooCommerce وEasy Digital Downloads وWP eCommerce).

nn

nشريط تمرير الثورة معطل!nn

n

تأكد js/jquery/jquery.min.js موجود في القائمة المفصولة بفواصل لاستثناءات تحسين JS (يتم استبعاد هذا في التكوين الافتراضي).

nn

nيظهر لي أن “لم يتم تعريف jQuery” أخطاءnn

n

في هذه الحالة، لديك JavaScript غير مجمع والذي يتطلب تحميل jQuery، لذلك سيتعين عليك إضافة js/jquery/jquery.min.js إلى القائمة المفصولة بفواصل لاستثناءات تحسين JS.

nn

nأستخدم NextGen Galleries ولم يتم تجميع/تصغير الكثير من ملفات JS؟nn

n

تقوم معارض NextGen ببعض الأشياء الرائعة لإضافة JavaScript. لكي تتمكن Autoptimize من تجميع ذلك، يمكنك إما تعطيل إدارة موارد Nextgen Gallery باستخدام مقتطف الرمز هذا add_filter( 'run_ngg_resource_manager', '__return_false' ); أو يمكنك إخبار Autoptimize بالتهيئة الأولية ze سابقًا، عن طريق إضافة هذا إلى ملف wp-config.php الخاص بك: define("AUTOPTIMIZE_INIT_EARLIER","true");

nn

nما هو noptimize؟nn

n

بدءًا من الإصدار 1.6.6، يستبعد Autoptimize كل شيء داخل علامات noptimize، على سبيل المثال:
n

n

يمكنك القيام بذلك في محتوى صفحتك/ منشورك، وفي عناصر واجهة المستخدم وفي ملفات السمات الخاصة بك (فكر في إنشاء موضوع الطفل لتجنب استبدال عملك بتحديثات السمة).

nn

nهل يمكنني تغيير الدليل & اسم الملف لملفات التحسين التلقائي المخزنة مؤقتاً؟nn

n

نعم، إذا كنت تريد تقديم الملفات من على سبيل المثال /wp-content/resources/aggreated_12345.css بدلاً من /wp-content/cache/autoptimize/autoptimize_12345.css الافتراضي، فقم بإضافة هذا إلى wp-config.php:

n

define('AUTOPTIMIZE_CACHE_CHILD_DIR','/resources/');ndefine('AUTOPTIMIZE_CACHEFILE_PREFIX','aggregated_');n

nn

nهل يعمل هذا مع WP_CONTENT_URL غير الافتراضي؟nn

n

لا، لا يدعم Autoptimize عنوان WP_CONTENT_URL غير الافتراضي الجاهز، ولكن يمكن تحقيق ذلك من خلال ربط سطرين من التعليمات البرمجية بواجهة برمجة التطبيقات الخاصة بـ Autoptimize.

nn

nهل يمكن ضغط ملف JS/ CSS الذي تم إنشاؤه مسبقًا؟nn

n

نعم، ولكن هذا معطل بشكل افتراضي. يمكنك تمكين ذلك عن طريق تمرير ´true´ إلى ´autoptimize_filter_cache_create_static_gzip´. من الواضح أنه لا يزال يتعين عليك تكوين خادم الويب الخاص بك لاستخدام هذه الملفات بدلاً من الملفات غير المضغوطة لتجنب الحمل الزائد للضغط الفوري.

nn

nما الذي يعنيه “إزالة الرموز التعبيرية” اِتَّشَحn

n

يزيل هذا الخيار الجديد في Autoptimize 2.3 ملفات CSS المضمنة وJS المضمنة وملف JS المرتبط الذي تمت إضافته بواسطة WordPress الأساسي. على هذا النحو يمكن أن يكون له تأثير إيجابي بسيط على أداء موقعك.

nn

nهل “إزالة سلاسل الاستعلام” مفيد؟nn

n

على الرغم من أن بعض أدوات تقييم الأداء عبر الإنترنت ستحدد "سلاسل الاستعلام عن الملفات الثابتة"؛ كمسألة تتعلق بالأداء، فإن تأثيرها يكاد يكون معدومًا بشكل عام. على هذا النحو، يتيح لك Autoptimize، منذ الإصدار 2.3، إزالة سلسلة الاستعلام (أو بتعبير أدق "معلمة الإصدار")، ولكن تحديد "إزالة سلاسل الاستعلام من الموارد الثابتة" ليس خيارًا. سيكون له تأثير ضئيل أو معدوم على أداء موقعك مقاسًا بـ (مللي) ثانية.

nn

n(كيف) يجب أن أقوم بتحسين خطوط Google؟nn

n

عادةً ما يتم تحميل خطوط Google عن طريق ميزة "حظر العرض" ملف CSS مرتبط. إذا كان لديك قالب ومكونات إضافية تستخدم خطوط Google، فقد ينتهي بك الأمر إلى الحصول على العديد من ملفات CSS. يتيح لك التحسين التلقائي (منذ الإصدار 2.3) الآن تقليل تأثير خطوط Google إما عن طريق إزالتها بالكامل أو عن طريق تحسين طريقة تحميلها. هناك نوعان من النكهات التحسين؛ الأول هو "الدمج والربط"، والذي يستبدل جميع طلبات خطوط Google في طلب واحد، والذي سيظل محظورًا للعرض ولكنه سيسمح بتحميل الخطوط على الفور (مما يعني أنك لن تفعل ذلك) راجع تغيير الخطوط أثناء تحميل الصفحة). البديل هو "الدمج والتحميل غير المتزامن" والذي يستخدم جافا سكريبت لتحميل الخطوط بطريقة لا تمنع العرض ولكنها قد تتسبب في "وميض نص غير منسق".

nn

nهل يجب أن أستخدم “الاتصال المسبق”nn

n

يعد الاتصال المسبق ميزة متقدمة إلى حد ما لتوجيه المتصفحات (إذا كانوا يدعمون ذلك) لإجراء اتصال بنطاقات محددة حتى لو لم تكن هناك حاجة للاتصال على الفور. يمكن استخدام هذا على سبيل المثال لتقليل تأثير موارد الطرف الثالث على HTTPS (حيث يتم تنفيذ طلب DNS واتصال TCP ومفاوضات SSL/TLS مبكرًا). استخدمه بحذر، لأن الاتصال المسبق بالعديد من المجالات قد يؤدي إلى نتائج عكسية.

nn

nمتى يمكنني(‘t) أن أقوم بمزامنة JS؟nn

n

عادةً ما تكون ملفات JavaScript التي لم يتم تحسينها تلقائيًا (لأنها مستبعدة أو لأنها مستضافة في مكان آخر) محظورة للعرض. عن طريق إضافتها في ملف “async JS” في الحقل، سيضيف Autoptimize علامة غير متزامنة مما يتسبب في قيام المتصفح بتحميل تلك الملفات بشكل غير متزامن (أي حظر بدون عرض). ومع ذلك، يمكن أن يؤدي ذلك إلى تعطيل موقعك (الصفحة)، على سبيل المثال، إذا قمت بمزامنة “js/jquery/jquery.min.js” من المحتمل جدًا أن تحصل على أخطاء "لم يتم تعريف jQuery" -. استخدمه بعناية.

nn

nكيف يعمل تحسين الصورة؟nn

n

عند تشغيل تحسين الصورة، سيبحث Autoptimize عن ملفات png وgif وjpeg (.jpg) في علامات الصور وفي ملفات CSS التي تم تحميلها من المجال الخاص بك وتغيير src (المصدر) إلى ShortPixel CDN لتلك الملفات. هام: يمكن أن يعمل هذا فقط مع الصور المتاحة للعامة، وإلا فلن يتمكن وكيل تحسين الصورة من الحصول على الصورة لتحسينها، لذا فإن جدران الحماية أو الوكلاء أو حماية كلمة المرور أو حتى منع الارتباط السريع قد يعطل تحسين الصورة.

nn

nهل يمكنني استخدام تحسين الصورة لموقع الإنترانت/المحمي الخاص بي؟nn

n

لا؛ يعتمد تحسين الصورة على قدرة خدمة تحسين الصور الخارجية على جلب الصورة الأصلية من موقعك وتحسينها وحفظها على CDN. إذا لم يتمكن الزوار المجهولون من تنزيل صورك (بسبب جدار الحماية/الوكيل/حماية كلمة المرور/حماية الارتباط السريع)، فلن يعمل تحسين الصورة.

nn

nأين يمكنني الحصول على مزيد من المعلومات حول تحسين الصورة؟nn

n

الق نظرة على الأسئلة الشائعة لـ Shortpixel.

nn

nهل يمكنني تعطيل استماع AO إلى عمليات إزالة ذاكرة التخزين المؤقت للصفحة؟nn

n

اعتبارًا من AO 2.4 AO “يستمع” لمسح ذاكرة التخزين المؤقت للصفحة لمسح ذاكرة التخزين المؤقت الخاصة بها. يمكنك تعطيل هذا السلوك باستخدام هذا الفلتر؛

n

add_filter('autoptimize_filter_main_hookpagecachepurge','__return_false');n

nn

nيتم فقدان بعض الأحرف غير ASCII بعد التحسينnn

n

بشكل افتراضي، يستخدم AO أساليب سلسلة غير آمنة متعددة البايت، ولكن إذا كان PHP الخاص بك يحتوي على ملحق mbstring، فيمكنك تمكين وظائف سلسلة آمنة متعددة البايت باستخدام هذا الفلتر؛

n

add_filter('autoptimize_filter_main_use_mbstring', '__return_true');n

nn

nلا أستطيع تشغيل CSS المهمnn

n

يفحص الأسئلة الشائعة حول “power-up” هنا، سيتم دمج هذه المعلومات في هذه الأسئلة الشائعة في وقت لاحق.

nn

nهل ما زلت بحاجة إلى تعزيز CSS المهم عندما يكون لدي Autoptimize 2.7 أو أعلى؟nn

n

لا، لم تعد هناك حاجة إلى تعزيز CSS المهم، حيث أصبحت جميع الوظائف (والعديد من الإصلاحات/التحسينات) الآن جزءًا من Autoptimize.

nn

nما الذي يتيح “إجراءات احتياطية 404” يفعل؟ لماذا أحتاج هذا؟nn

n

تحسين ذاكرة التخزين المؤقت المجمعة & يتم تخزين CSS/JS الأمثل والروابط لتلك الملفات المخزنة مؤقتًا في HTML، والتي سيتم تخزينها في ذاكرة التخزين المؤقت للصفحة (والتي يمكن أن تكون مكونًا إضافيًا، ويمكن أن تكون على مستوى المضيف، ويمكن أن تكون لدى جهة خارجية، في ذاكرة التخزين المؤقت لـ Google، في المتصفح). إذا كان هناك HTML في ذاكرة التخزين المؤقت للصفحة التي ترتبط بـ Autoptimized CSS/JS والتي تمت إزالتها في الوقت نفسه (عندما تم مسح ذاكرة التخزين المؤقت)، فلن تظهر/تعمل الصفحة من ذاكرة التخزين المؤقت كما هو متوقع لأنه لم يتم العثور على CSS أو JS (خطأ 404).

n

يهدف هذا الإعداد إلى منع الأشياء من الانهيار عن طريق تقديم "احتياطي"؛ CSS أو JS. الملفات الاحتياطية هي نسخ من أول ملف Autoptimized CSS & ملفات JS التي تم إنشاؤها بعد إفراغ ذاكرة التخزين المؤقت، وبالتالي ستعتمد على الصفحة الرئيسية. وهذا يعني أن CSS/JS قد لا ينطبق بنسبة 100% على الصفحات الأخرى، ولكن على الأقل سيتم تقليل تأثير فقدان CSS/JS (في كثير من الأحيان بشكل كبير).

n

عند تمكين الخيار، يضيف Autoptimize ErrorDocument 404 إلى .htaccess (كما يستخدمه Apache) وسيتم ربطه أيضًا بـ WordPress core template_redirect لالتقاط 404's التي تتم معالجتها بواسطة WordPress. عند استخدام NGINX، يجب أن يعمل شيء ما كما هو موضح أدناه (أنا لست متخصصًا في NGINX، لكنه يعمل لصالحي)؛

n

location ~* /wp-content/cache/autoptimize/.*\.(js|css)$ {n    try_files $uri $uri/ /wp-content/autoptimize_404_handler.php;n}n

n

وهذا نهج بديل لطيف (مقدم من fboylovesyou)؛

n

location ~* /wp-content/cache/autoptimize/.*\.(css)$ {n    try_files $uri $uri/ /wp-content/cache/autoptimize/css/autoptimize_fallback.css;n}nlocation ~* /wp-content/cache/autoptimize/.*\.(js)$ {n    try_files $uri $uri/ /wp-content/cache/autoptimize/js/autoptimize_fallback.js;n}n

nn

nما هي البرامج/المشاريع مفتوحة المصدر المستخدمة في Autoptimize؟nn

n

يتم استخدام المشاريع الرائعة مفتوحة المصدر التالية في Autoptimize بشكل أو بآخر:

n

nn

nأين يمكنني الحصول على المساعدة؟nn

n

يمكنك الحصول على المساعدة على منتدى دعم WordPress.org. إذا كنت متأكدًا بنسبة 100% من أنه لا يمكن حل مشكلتك باستخدام التكوين التلقائي وأنك بالفعل اكتشفت خطأً في التعليمات البرمجية، فيمكنك إنشاء مشكلة على جيثب. إذا كنت تبحث عن دعم متميز، فاطلع على موقعنا التحسين التلقائي لخدمات الدعم الاحترافي وتحسين أداء الويب.

nn

nأريد الخروج، كيف يمكنني إزالة Autoptimize؟nn

n

    n

  • قم بتعطيل المكون الإضافي (سيؤدي ذلك إلى إزالة الخيارات وذاكرة التخزين المؤقت)
  • n

  • إزالة البرنامج المساعد
  • n

  • امسح أي ذاكرة تخزين مؤقت قد لا تزال تحتوي على صفحات تشير إلى Autoptimized CSS/JS (على سبيل المثال، مكون إضافي للتخزين المؤقت للصفحة مثل WP Super Cache)
  • n

nn

nكيف يمكنني المساعدة/المساهمة؟nn

n

فقط شوكة التحسين التلقائي على جيثب ورمز بعيدا!

nnn", "سجل التغيير": "

3.1.12

n

    n

  • تحسين الصورة: تحسينات على الرمز المفضل regex
  • n

  • تحسين جافا سكريبت: دمج أحدث إصدار من jsmin.php
  • n

  • CSS الهامة: تحسين قائمة الحظر (عنوان URL/ المسارات التي لا ينبغي إضافتها إلى قائمة انتظار المهام)
  • n

  • بعض التغييرات/التحسينات/المرشحات الطفيفة الأخرى، راجع سجل التزام جيثب.
  • n

n

3.1.11

n

n

3.1.10

n

    n

  • التحسين: مع "عدم التجميع ولكن تأجيل"؛ و “تأجيل JS المضمّن أيضًا” تشغيل، قم أيضًا بتأجيل JS الذي يحتوي على علامة غير متزامنة لتجنب تنفيذ JS المتزامن (سابقًا) قبل تشغيل JS المضمن.
  • n

  • التحسين: إظهار خيار تعطيل الإعداد الافتراضي في "منطق التوافق".
  • n

  • إصلاح الانحدار في الإصدار 3.1.9 والذي تسبب في عدم عمل تحسين صورة JetPack حتى لو تم إيقاف تحسين الصورة في AO.
  • n

  • API: بعض الخطافات الإضافية في CSS المهمة لتمكين الآخرين (و AOPro) من التصرف بناءً على التغييرات في قواعد CSS المهمة
  • n

  • بعض التغييرات/التحسينات/المرشحات الطفيفة الأخرى، راجع سجل التزام جيثب.
  • n

n

3.1.9

n

    n

  • التحسين: تفعيل JS وCSS & تحسين HTML عند تنشيط المكون الإضافي (نصيحة لآدم سيلفرشتاين (مهندس علاقات المطورين في Google))
  • n

  • التحسين: أيضًا تأجيل JS غير المتزامن (للتأكد من بقاء أمر التنفيذ سليمًا؛ يجب عدم تنفيذ JS غير المتزامن قبل تأجيل JS المضمن الذي قد يعتمد عليه)
  • n

  • التحسين: استبعاد الصور من التحميل البطيء إذا تم تعيين سمة fetchpriority على "عالية" (كما فعلت WordPress الأساسية منذ 6.3)
  • n

  • bugfix: تعطيل التدقيق الإملائي في مناطق نص CSS (فوق الجزء المرئي من CSS/CSS الهامة) والذي تسبب في بعض الحالات في حدوث مشكلات في المتصفح
  • n

  • أضف علامة تبويب لشرح Autoptimize Pro.
  • n

  • تم تأكيد العمل مع WordPress 6.4 (بيتا 3)
  • n

  • بعض التغييرات/التحسينات/المرشحات الطفيفة الأخرى، راجع سجل التزام جيثب.
  • n

n

3.1.8.1

n

    n

  • إصلاح عاجل لخطأ PHP، آسف لذلك!
  • n

n

3.1.8

n

    n

  • الصور: تحسين منطق التحسين لصور الخلفية
  • n

  • CSS الحرجة: لا تقم بتشغيل قاعدة custom_post إذا لم تكن is_singular + إضافة تسجيل التصحيح لاختيار القاعدة
  • n

  • بعض التغييرات/التحسينات/المرشحات الطفيفة الأخرى، راجع سجل التزام جيثب.
  • n

n

3.1.7

n

    n

  • الأمان: تحسين التحقق من الصحة (الاستيراد) والتطهير (الإخراج) لقواعد CSS الهامة، لإصلاح ثغرة أمنية متوسطة الخطورة في Admin+ Stored Cross-Site Scripting كما أبلغ عنها WP Scan Security.
  • n

n

3.1.6

n

    n

  • CSS: إزالة الخطوط المائلة اللاحقة في علامات n
  • إضافي: يمكنك أيضًا إلغاء حظر WooCommerce في حالة CSS في حالة "إزالة كتلة WordPress CSS"؛ الخيار نشط
  • n

  • imgopt: يعمل أيضًا على CSS المضمن غير المجمع
  • n

  • imgopt: منطق إضافي لتحذير المستخدمين إذا لم يتمكن Shortpixel من الوصول إلى موقعهم
  • n

  • الواجهة الخلفية: أخيرًا تم تصغير شريط أدوات AO JS/CSS أيضًا.
  • n

  • تعطيل صراحة تحسين صفحات تسجيل الدخول
  • n

  • بعض التغييرات/التحسينات/المرشحات الطفيفة الأخرى، راجع سجل التزام جيثب.
  • n

n

3.1.5

nn

    n

  • تحسينات على JSMin بواسطة Robert Ehrenleitner (شكرًا جزيلا لروبرت!).
  • n

  • لا تعتبر jquery.js مصغرًا بعد الآن (يستخدم WordPress الآن jquery.min.js افتراضيًا وjquery.js هو الإصدار غير المصغر).
  • n

  • إصلاح “مفتاح الصفيف غير المحدد” أخطاء PHP في autoptimizeCriticalCSSCron.php
  • n

  • بعض التغييرات/التحسينات/المرشحات الطفيفة الأخرى، راجع سجل التزام جيثب.
  • n

n

3.1.4

nn

    n

  • التحسين: عندما يتم تضمين كل CSS، حاول القيام بذلك بعد العلامات الوصفية لتحسين محركات البحث (مباشرة قبل علامة البرنامج النصي ld+json التي تضيفها معظم ملحقات SEO كعنصر أخير في قائمتها).
  • n

  • Img opt: يمكنك أيضًا تحسين مجموعة الصور في سمات خلفية البيانات وبيانات شبكية العين (+ مرشح لإضافة سمات أخرى بسهولة)
  • n

  • اختيار CSS: مرشح لتمكين AO من تخطي تصغير صيغ الحساب في CSS (حيث يقوم مُصغر CSS في مناسبات نادرة بكسر تلك الصيغ)
  • n

  • تمت إضافة العديد من المرشحات الأخرى
  • n

  • بعض التغييرات/التحسينات/المرشحات الطفيفة الأخرى، راجع سجل التزام جيثب.
  • n

n

3.1.3

nn

    n

  • إصلاحات متعددة للتحميل المسبق لصورة metabox LCP (شكرًا كيشورشاند للإخطار & توفير بيئة مرحلية لتصحيح الأخطاء).
  • n

  • إصلاح التوافق مع revslider (نصيحة القبعة وقار أحمد للتقارير & المساعدة ).
  • n

  • لم تعد هناك محاولات تحسين الصورة أو محاولات CSS الحرجة على عمليات تثبيت المضيف المحلي بعد الآن + إشعار بهذه الحقيقة في حالة اكتشاف المضيف المحلي.
  • n

  • بعض التغييرات/التحسينات/المرشحات الطفيفة الأخرى، راجع سجل التزام جيثب.
  • n

n

3.1.2

nn

    n

  • خطوط Google: المزيد من منطق الإزالة
  • n

  • إصلاح الخطأ الاحتياطي 404 (نصيحة إلى Asif للبحث والإبلاغ)
  • n

  • بعض التغييرات/التحسينات/المرشحات الطفيفة الأخرى، راجع سجل التزام جيثب.
  • n

n

3.1.1.1

nn

    n

  • حل سريع لتعارض التحميل التلقائي مع JetFormBuilder (وربما مكونات Crocoblock الإضافية الأخرى؟) والذي يتسبب في حدوث خطأ فادح في صفحة إعدادات AO.
  • n

n

3.1.1

nn

    n

  • الصور: عند تشغيل تحسين الصور والتحميل البطيء، لا تقم افتراضيًا بتعيين LQIP (عنصر نائب للصورة منخفضة الجودة) بعد الآن (السبب: قد يكون ذلك ينظر جميل لكنه يأتي مع أداء صغير. جزاء). يمكن إعادة تمكين هذا من خلال العودة إلى الوضع الصحيح autoptimize_filter_imgopt_lazyload_dolqip فلتر.
  • n

  • الأمان: مزيد من التحسينات على صفحة إعدادات CSS الهامة (مرة أخرى بمساعدة كبيرة من WPScan Security).
  • n

  • بعض التغييرات/التحسينات/المرشحات الطفيفة الأخرى، راجع سجل التزام جيثب.
  • n

n

3.1.0

nn

    n

  • خيار HTML الفرعي الجديد: “تصغير CSS/ JS” (إيقاف بشكل افتراضي).
  • n

  • خيار Misc الجديد: السماح بشكل دائم بـ “عدم تشغيل منطق التوافق” العلامة المراد إزالتها (والتي تم تعيينها للمستخدمين الذين يقومون بالترقية من AO 2.9.* إلى AO 3.0.* حيث كان الافتراض أن الأمور تسير على ما يرام على أي حال).
  • n

  • الأمان: تحسينات على صفحة إعدادات CSS الهامة لإصلاح مشكلات البرمجة النصية للمواقع المصادق عليها كما أبلغ عنها WPScan Security.
  • n

  • إصلاح الأخطاء: “تأجيل JS المضمّن” قد تتسبب الأجزاء الكبيرة جدًا من JS المضمنة في حدوث أخطاء في الخادم (تعطل PCRE فعليًا) لذا لا يتم التأجيل إذا كانت السلسلة أكثر من 200000 حرف (يتوفر عامل التصفية).
  • n

  • بعض التغييرات/التحسينات/الخطافات الطفيفة الأخرى، راجع سجل التزام جيثب
  • n

n

3.0.4

nn

    n

  • إصلاح "مفتاح الصفيف غير المحدد ao_post_preload" على شاشات تحرير المنشور/الصفحة
  • n

  • إصلاح لتحسين الصورة وتغيير JS المضمن الذي يحتوي على ضع علامة إذا كان Lazyload غير نشط
  • n

  • تحسينات للخروج من المسح
  • n

  • تم تأكيد العمل مع WordPress 6.0
  • n

n

3.0.3

nn

    n

  • إصلاح الصور التي يتم تحميلها مسبقًا دون تكوين هذا عند تشغيل Lazyload وإيقاف إعدادات كل صفحة/منشور.
  • n

  • تأكد من أن جدول CSS المهم معروف دائمًا.
  • n

  • عند تأجيل JS غير المجمعة، اجعل استثناءات التحسين تأخذ علامة البرنامج النصي الكاملة في الاعتبار بدلاً من عنوان URL src فقط.
  • n

n

3.0.2

nn

    n

  • التراجع التلقائي “تصغير CSS/ JS” الذي تعطل أكثر من المتوقع، سيعود هذا كخيار إيقاف افتراضي منفصل لاحقًا ويمكن الآن تمكينه باستخدام مرشح بسيط: add_filter( 'autoptimize_html_minify_inline_js_css', '__return_true'); .
  • n

  • إصلاح “استدعاء طريقة غير محددة autoptimizeOptionWrapper::delete_option()” في autoptimizeVersionUpdatesHandler.php
  • n

n

3.0.1

nn

    n

  • إصلاح لتصغير البرنامج النصي المضمن مع نوع النص/القالب الذي يكسر القالب (على سبيل المثال، نماذج النينجا)، نصيحة إلى @bobsled.
  • n

  • إصلاح الانحدار في استيراد ملفات CSS حيث تم كسر CSS Fontawesome على سبيل المثال بسبب الهروب مرة أخرى بمساعدةbobsled، شكرًا يا رجل!
  • n

n

3.0.0

nn

    n

  • تغيير أساسي لعمليات التثبيت الجديدة: افتراضيًا، لن يقوم Autoptimize بتجميع JS/CSS بعد الآن (HTTP/2 موجود في كل مكان وهناك مزايا أخرى لعدم التجميع، خاصة فيما يتعلق بـ JS/CSS المضمّن والتبعيات)
  • n

  • جديد: لم تعد هناك حاجة لواجهة برمجة التطبيقات (API) لإنشاء قواعد CSS الهامة يدويًا.
  • n

  • جديد: “إزالة كتل WordPress لـ CSS” خيار على “إضافي” علامة التبويب لإزالة الأنماط الشاملة والعامة (وSVG).
  • n

  • جديد: منطق التوافق لـ “تحرير باستخدام elementor”, “شريط تمرير الثورة”، لـ JS المضمنة غير المجمعة التي تتطلب jQuery حتى لو لم يتم استبعادها (=استبعاد تلقائي لـ jQuery) وJS-heavy كتل ووردبريس (جوتنبرج)
  • n

  • جديد: قم بتكوين صورة ليتم تحميلها مسبقًا على أساس كل صفحة/منشور لتحسين LCP.
  • n

  • التحسين: أصبح التأجيل المضمّن الآن مسموحًا به أيضًا إذا كان JS المضمّن يحتوي على nonce أو post_id.
  • n

  • التحسين: إعدادات التصدير/الاستيراد في علامة تبويب CSS الهامة تأخذ الآن في الاعتبار جميع إعدادات التحسين التلقائي، وليس فقط إعدادات CSS المهمة.
  • n

  • التحسين الفني: تمت إعادة هيكلة جميع فئات CSS المهمة، مما أدى إلى إزالة استخدام المتغيرات العامة.
  • n

  • التحسين الفني: اختبارات الوحدة الآلية على Travis-CI لإصدارات PHP من 7.2 إلى 8.1.
  • n

  • الإصلاح: إيقاف Divi من مسح ذاكرة التخزين المؤقت للتحسين التلقائي وهو أمر يأتي بنتائج عكسية إلى حد ما.
  • n

  • إصلاحات / تحسينات أصغر متنوعة، راجع سجل التزام جيثب
  • n

n

كبار السن

nn

n" }, "download_link": "https://downloads.wordpress.org/plugin/autoptimize.3.1.12.zip", "download_link_mirror": "https://downloads.mycloudflareproxy_domain.com/autoptimize.3.1.12.zip", "لقطات الشاشة": [], "العلامات": { "مؤشرات حيوية الويب الأساسية": "حيوية الويب الأساسية", "الصور": "الصور", "تحسين": "تحسين", "سرعة الصفحة": "سرعة الصفحة", "أداء": "أداء" }, "الإصدارات": { "0.1": "https://downloads.wordpress.org /plugin/autotimize.0.1.zip", "0.2": "https://downloads.wordpress.org/plugin/autoptimize.0.2.zip", "0.3": "https://downloads.wordpress.org/plugin/autoptimize.0.3.zip", "0.4": "https://downloads.wordpress.org/plugin/autoptimize.0.4.zip", "0.5": "https://downloads.wordpress.org/plugin/autoptimize.0.5.zip", "0.6": "https://downloads.wordpress.org/plugin/autoptimize.0.6.zip", "0.7": "https://downloads.wordpress.org/plugin/autoptimize.0.7.zip", "0.8": "https://downloads.wordpress.org/plugin/autoptimize.0.8.zip", "0.9": "https://downloads.wordpress.org/plugin/autoptimize.0.9.zip", "1.1": "https://downloads.wordpress.org/plugin/autoptimize.1.1.zip", "1.2": "https://downloads.wordpress.org/plugin/autoptimize.1.2.zip", "1.3": "https://downloads.wordpress.org/plugin/autoptimize.1.3.zip", "1.4": "https://downloads.wordpress.org/plugin/autoptimize.1.4.zip", "1.5": "https://downloads.wordpress.org/plugin/autoptimize.1.5.zip", "1.5.1": "https://downloads.wordpress.org/plugin/autoptimize.1.5.1.zip", "1.6.0": "https://downloads.wordpress.org/plugin/autoptimize.1.6.0.zip", "1.6.1": "https://downloads.wordpress.org/plugin/autoptimize.1.6.1.zip", "1.6.2": "https://downloads.wordpress.org/plugin/autoptimize.1.6.2.zip", "1.6.3": "https://downloads.wordpress.org/plugin/autoptimize.1.6.3.zip", "1.6.4": "https://downloads.wordpress.org/plugin/autoptimize.1.6.4.zip", "1.6.5": "https://downloads.wordpress.org/plugin/autoptimize.1.6.5.zip", "1.6.6": "https://downloads.wordpress.org/plugin/autoptimize.1.6.6.zip", "1.7.0": "https://downloads.wordpress.org/plugin/autoptimize.1.7.0.zip", "1.7.1": "https://downloads.wordpress.org/plugin/autoptimize.1.7.1.zip", "1.7.2": "https://downloads.wordpress.org/plugin/autoptimize.1.7.2.zip", "1.7.3": "https://downloads.wordpress.org/plugin/autoptimize.1.7.3.zip", "1.8.0": "https://downloads.wordpress.org/plugin/autoptimize.1.8.0.zip", "1.8.1": "https://downloads.wordpress.org/plugin/autoptimize.1.8.1.zip", "1.8.2": "https://downloads.wordpress.org/plugin/autoptimize.1.8.2.zip", "1.8.3": "https://downloads.wordpress.org/plugin/autoptimize.1.8.3.zip", "1.8.4": "https://downloads.wordpress.org/plugin/autoptimize.1.8.4.zip", "1.8.5": "https://downloads.wordpress.org/plugin/autoptimize.1.8.5.zip", "1.9.0": "https://downloads.wordpress.org/plugin/autoptimize.1.9.0.zip", "1.9.1": "https://downloads.wordpress.org/plugin/autoptimize.1.9.1.zip", "1.9.2": "https://downloads.wordpress.org/plugin/autoptimize.1.9.2.zip", "1.9.3": "https://downloads.wordpress.org/plugin/autoptimize.1.9.3.zip", "1.9.4": "https://downloads.wordpress.org/plugin/autoptimize.1.9.4.zip", "2.0.0": "https://downloads.wordpress.org/plugin/autoptimize.2.0.0.zip", "2.0.1": "https://downloads.wordpress.org/plugin/autoptimize.2.0.1.zip", "2.0.2": "https://downloads.wordpress.org/plugin/autoptimize.2.0.2.zip", "2.1.0": "https://downloads.wordpress.org/plugin/autoptimize.2.1.0.zip", "2.1.1": "https://downloads.wordpress.org/plugin/autoptimize.2.1.1.zip", "2.1.2": "https://downloads.wordpress.org/plugin/autoptimize.2.1.2.zip", "2.2.0": "https://downloads.wordpress.org/plugin/autoptimize.2.2.0.zip", "2.2.1": "https://downloads.wordpress.org/plugin/autoptimize.2.2.1.zip", "2.2.2": "https://downloads.wordpress.org/plugin/autoptimize.2.2.2.zip", "2.3.0": "https://downloads.wordpress.org/plugin/autoptimize.2.3.0.zip", "2.3.1": "https://downloads.wordpress.org/plugin/autoptimize.2.3.1.zip", "2.3.2": "https://downloads.wordpress.org/plugin/autoptimize.2.3.2.zip", "2.3.3": "https://downloads.wordpress.org/plugin/autoptimize.2.3.3.zip", "2.3.4": "https://downloads.wordpress.org/plugin/autoptimize.2.3.4.zip", "2.4.0": "https://downloads.wordpress.org/plugin/autoptimize.2.4.0.zip", "2.4.1": "https://downloads.wordpress.org/plugin/autoptimize.2.4.1.zip", "2.4.2": "https://downloads.wordpress.org/plugin/autoptimize.2.4.2.zip", "2.4.3": "https://downloads.wordpress.org/plugin/autoptimize.2.4.3.zip", "2.4.4": "https://downloads.wordpress.org/plugin/autoptimize.2.4.4.zip", "2.5.0": "https://downloads.wordpress.org/plugin/autoptimize.2.5.0.zip", "2.5.1": "https://downloads.wordpress.org/plugin/autoptimize.2.5.1.zip", "2.6.0": "https://downloads.wordpress.org/plugin/autoptimize.2.6.0.zip", "2.6.1": "https://downloads.wordpress.org/plugin/autoptimize.2.6.1.zip", "2.6.2": "https://downloads.wordpress.org/plugin/autoptimize.2.6.2.zip", "2.7.0": "https://downloads.wordpress.org/plugin/autoptimize.2.7.0.zip", "2.7.1": "https://downloads.wordpress.org/plugin/autoptimize.2.7.1.zip", "2.7.2": "https://downloads.wordpress.org/plugin/autoptimize.2.7.2.zip", "2.7.3": "https://downloads.wordpress.org/plugin/autoptimize.2.7.3.zip", "2.7.4": "https://downloads.wordpress.org/plugin/autoptimize.2.7.4.zip", "2.7.5": "https://downloads.wordpress.org/plugin/autoptimize.2.7.5.zip", "2.7.6": "https://downloads.wordpress.org/plugin/autoptimize.2.7.6.zip", "2.7.7": "https://downloads.wordpress.org/plugin/autoptimize.2.7.7.zip", "2.7.8": "https://downloads.wordpress.org/plugin/autoptimize.2.7.8.zip", "2.8.0": "https://downloads.wordpress.org/plugin/autoptimize.2.8.0.zip", "2.8.1": "https://downloads.wordpress.org/plugin/autoptimize.2.8.1.zip", "2.8.2": "https://downloads.wordpress.org/plugin/autoptimize.2.8.2.zip", "2.8.3": "https://downloads.wordpress.org/plugin/autoptimize.2.8.3.zip", "2.8.4": "https://downloads.wordpress.org/plugin/autoptimize.2.8.4.zip", "2.9.0": "https://downloads.wordpress.org/plugin/autoptimize.2.9.0.zip", "2.9.1": "https://downloads.wordpress.org/plugin/autoptimize.2.9.1.zip", "2.9.2": "https://downloads.wordpress.org/plugin/autoptimize.2.9.2.zip", "2.9.3": "https://downloads.wordpress.org/plugin/autoptimize.2.9.3.zip", "2.9.4": "https://downloads.wordpress.org/plugin/autoptimize.2.9.4.zip", "2.9.5": "https://downloads.wordpress.org/plugin/autoptimize.2.9.5.zip", "2.9.5.1": "https://downloads.wordpress.org/plugin/autoptimize.2.9.5.1.zip", "3.0.0": "https://downloads.wordpress.org/plugin/autoptimize.3.0.0.zip", "3.0.1": "https://downloads.wordpress.org/plugin/autoptimize.3.0.1.zip", "3.0.2": "https://downloads.wordpress.org/plugin/autoptimize.3.0.2.zip", "3.0.3": "https://downloads.wordpress.org/plugin/autoptimize.3.0.3.zip", "3.0.4": "https://downloads.wordpress.org/plugin/autoptimize.3.0.4.zip", "3.1.0": "https://downloads.wordpress.org/plugin/autoptimize.3.1.0.zip", "3.1.1": "https://downloads.wordpress.org/plugin/autoptimize.3.1.1.zip", "3.1.1.1": "https://downloads.wordpress.org/plugin/autoptimize.3.1.1.1.zip", "3.1.10": "https://downloads.wordpress.org/plugin/autoptimize.3.1.10.zip", "3.1.11": "https://downloads.wordpress.org/plugin/autoptimize.3.1.11.zip", "3.1.12": "https://downloads.wordpress.org/plugin/autoptimize.3.1.12.zip", "3.1.2": "https://downloads.wordpress.org/plugin/autoptimize.3.1.2.zip", "3.1.3": "https://downloads.wordpress.org/plugin/autoptimize.3.1.3.zip", "3.1.4": "https://downloads.wordpress.org/plugin/autoptimize.3.1.4.zip", "3.1.5": "https://downloads.wordpress.org/plugin/autoptimize.3.1.5.zip", "3.1.6": "https://downloads.wordpress.org/plugin/autoptimize.3.1.6.zip", "3.1.7": "https://downloads.wordpress.org/plugin/autoptimize.3.1.7.zip", "3.1.8": "https://downloads.wordpress.org/plugin/autoptimize.3.1.8.zip", "3.1.8.1": "https://downloads.wordpress.org/plugin/autoptimize.3.1.8.1.zip", "3.1.9": "https://downloads.wordpress.org/plugin /autotimize.3.1.9.zip", "صُندُوق": "https://downloads.wordpress.org/plugin/autoptimize.zip" }, "donate_link": "http://blog.futtta.be/2013/10/21/do-not-donate-to-me/", "المساهمين": { "فوتا": "https://profiles.wordpress.org/futtta/", "تحسين الأمور": "https://profiles.wordpress.org/optimizingmatters/", "zytzagoo": "https://profiles.wordpress.org/zytzagoo/", "تورل": "https://profiles.wordpress.org/turl/" } }">

{  "name": "Autoptimize",  "slug": "autoptimize",  "version": "3.1.12",  "author": ""https://autoptimize.com/pro/">Frank Goossens (futtta)",  "author_profile": "https://profiles.wordpress.org/optimizingmatters/",  "requires": "5.3",  "tested": "6.6.2",  "requires_php": "5.6",  "requires_plugins": [],  "compatibility": [],  "rating": 94,  "ratings": {    "5": 1275,    "4": 34,    "3": 21,    "2": 20,    "1": 61  },  "num_ratings": 1411,  "support_threads": 23,  "support_threads_resolved": 21,  "downloaded": 40110102,  "last_updated": "2024-07-25 5:22pm GMT",  "added": "2009-07-09",  "homepage": "https://autoptimize.com/pro/",  "sections": {    "description": "

Autoptimize makes optimizing your site really easy. It can aggregate, minify and cache scripts and styles, injects CSS in the page head by default but can also inline critical CSS and defer the aggregated full CSS, moves and defers scripts to the footer and minifies HTML. You can optimize and lazy-load images (with support for WebP and AVIF formats), optimize Google Fonts, async non-aggregated JavaScript, remove WordPress core emoji cruft and more. As such it can improve your site’s performance even when already on HTTP/2! There is extensive API available to enable you to tailor Autoptimize to each and every site’s specific needs.
nIf you think performance indeed is important, you should at least consider one of the many free page caching plugins (e.g. Speed Booster pack or KeyCDN’s Cache Enabler) to complement Autoptimize or even consider Autoptimize Pro which not only has page caching but also image optimization, CDN, critical CSS and more!

n
n

Autoptimize Pro
n Autoptimize Pro is a premium Power-Up, adding image optimization, CDN, page caching, automatic critical CSS rules and extra “booster” options, all in one handy subscription to make your site even faster!!

n

Premium Support
n We provide great Premium Support and Web Performance Optimization services with Accelera, check out our offering on https://accelerawp.com/!

n
n

(Speed-surfing image under creative commons by LL Twistiti)

n", "installation": "

Just install from your WordPress “Plugins > Add New” screen and all will be well. Manual installation is very straightforward as well:

n
    n
  1. Upload the zip file and unzip it in the /wp-content/plugins/ directory
  2. n
  3. Activate the plugin through the ‘Plugins’ menu in WordPress
  4. n
  5. Go to Settings > Autoptimize and enable the options you want. Generally this means “Optimize HTML/ CSS/ JavaScript”.
  6. n
n"
, "faq": "n
nWhat does the plugin do to help speed up my site?nn

n

It minifies all scripts and styles and configures your webserver to compresses them with good expires headers. JavaScript be default will be made non-render-blocking and CSS can be too by adding critical CSS. You can configure it to combine (aggregate) CSS & JS-files, in which case styles are moved to the page head, and scripts to the footer. It also minifies the HTML code and can also optimize images and Google Fonts, making your page really lightweight.

nn

nBut I’m on HTTP/2, so I don’t need Autoptimize?nn

n

HTTP/2 is a great step forward for sure, reducing the impact of multiple requests from the same server significantly by using the same connection to perform several concurrent requests and for that reason on new installations Autoptimize will not aggregate CSS and JS files any more. That being said, concatenation of CSS/ JS can still make a lot of sense, as described in this css-tricks.com article and this blogpost from one of the Ebay engineers. The conclusion; configure, test, reconfigure, retest, tweak and look what works best in your context. Maybe it’s just HTTP/2, maybe it’s HTTP/2 + aggregation and minification, maybe it’s HTTP/2 + minification (which AO can do as well, simply untick the “aggregate JS-files” and/ or “aggregate CSS-files” options). And Autoptimize can do a lot more then “just” optimizing your JS & CSS off course 😉

nn

nWill this work with my blog?nn

n

Although Autoptimize comes without any warranties, it will in general work flawlessly if you configure it correctly. See “Troubleshooting” below for info on how to configure in case of problems. If you want you can test Autoptimize on a new free dummy site, courtesy of tastewp.com.

nn

nWhy is jquery.min.js not optimized when aggregating JavaScript?nn

n

Starting from AO 2.1 WordPress core’s jquery.min.js is not optimized for the simple reason a lot of popular plugins inject inline JS that is not aggregated either (due to possible cache size issues with unique code in inline JS) which relies on jquery being available, so excluding jquery.min.js ensures that most sites will work out of the box. If you want optimize jquery as well, you can remove it from the JS optimization exclusion-list (you might have to enable “also aggregate inline JS” as well or switch to “force JS in head”).

nn

nWhy is Autoptimized JS render blocking?nn

n

This happens when aggregating JavaSCript and ticking the “force in head” option or when not aggregating and not deferring. Consider changing settings.

nn

nWhy is the autoptimized CSS still called out as render blocking?nn

n

With the default Autoptimize configuration the CSS is linked in the head, which is a safe default but has Google PageSpeed Insights complaining. You can look into “inline all CSS” (easy) or “inline and defer CSS” (better) which are explained in this FAQ as well.

nn

nWhat is the use of “inline and defer CSS”?nn

n

CSS in general should go in the head of the document. Recently a.o. Google started promoting deferring non-essential CSS, while inlining those styles needed to build the page above the fold. This is especially important to render pages as quickly as possible on mobile devices. As from Autoptimize 1.9.0 this is easy; select “inline and defer CSS”, paste the block of “above the fold CSS” in the input field (text area) and you’re good to go!

nn

nBut how can one find out what the “above the fold CSS” is?nn

n

There’s no easy solution for that as “above the fold” depends on where the fold is, which in turn depends on screensize. There are some tools available however, which try to identify just what is “above the fold”. This list of tools is a great starting point. The Sitelocity critical CSS generator and Jonas Ohlsson’s criticalpathcssgenerator are nice basic solutions and http://criticalcss.com/ is a premium solution by the same Jonas Ohlsson. Alternatively this bookmarklet (Chrome-only) can be helpful as well.

nn

nOr should you inline all CSS?nn

n

The short answer: probably not. Although inlining all CSS will make the CSS non-render blocking, it will result in your base HTML-page getting significantly bigger thus requiring more “roundtrip times”. Moreover when considering multiple pages being requested in a browsing session the inline CSS is sent over each time, whereas when not inlined it would be served from cache. Finally the inlined CSS will push the meta-tags in the HTML down to a position where Facebook or Whatsapp might not look for it any more, breaking e.g. thumbnails when sharing on these platforms.

nn

nMy cache is getting huge, doesn’t Autoptimize purge the cache?nn

n

Autoptimize does not have its proper cache purging mechanism, as this could remove optimized CSS/JS which is still referred to in other caches, which would break your site. Moreover a fast growing cache is an indication of other problems you should avoid.

n

Instead you can keep the cache size at an acceptable level by either:

n

    n

  • disactivating the “aggregate inline JS” and/ or “aggregate inline CSS” options
  • n

  • excluding JS-variables (or sometimes CSS-selectors) that change on a per page (or per pageload) basis. You can read how you can do that in this blogpost.
  • n

n

Despite above objections, there are 3rd party solutions to automatically purge the AO cache, e.g. using this code or this plugin, but for reasons above these are to be used only if you really know what you’re doing.

nn

n“Clear cache” doesn’t seem to work?nn

n

When clicking the “Delete Cache” link in the Autoptimize dropdown in the admin toolbar, you might to get a “Your cache might not have been purged successfully”. In that case go to Autoptimizes setting page and click the “Save changes & clear cache”-button.

n

Moreover don’t worry if your cache never is down to 0 files/ 0KB, as Autoptimize (as from version 2.2) will automatically preload the cache immediately after it has been cleared to speed further minification significantly up.

nn

nMy site looks broken when I purge Autoptimize’s cache!nn

n

When clearing AO’s cache, no page cache should contain pages (HTML) that refers to the removed optimized CSS/ JS. Although for that purpose there is integration between Autoptimize and some page caches, this integration does not cover 100% of setups so you might need to purge your page cache manually.

nn

nCan I still use Cloudflare’s Rocket Loader?nn

n

Cloudflare Rocket Loader is a pretty advanced but invasive way to make JavaScript non-render-blocking, which Cloudflare still considers Beta. Sometimes Autoptimize & Rocket Loader work together, sometimes they don’t. The best approach is to disable Rocket Loader, configure Autoptimize and re-enable Rocket Loader (if you think it can help) after that and test if everything still works.

n

At the moment (June 2017) it seems RocketLoader might break AO’s “inline & defer CSS”, which is based on Filamentgroup’s loadCSS, resulting in the deferred CSS not loading.

nn

nI tried Autoptimize but my Google Pagespeed Scored barely improvednn

n

Autoptimize is not a simple “fix my Pagespeed-problems” plugin; it “only” aggregates & minifies (local) JS & CSS and images and allows for some nice extra’s as removing Google Fonts and deferring the loading of the CSS. As such Autoptimize will allow you to improve your performance (load time measured in seconds) and will probably also help you tackle some specific Pagespeed warnings. If you want to improve further, you will probably also have to look into e.g. page caching and your webserver configuration, which will improve real performance (again, load time as measured by e.g. https://webpagetest.org) and your “performance best practice” pagespeed ratings.

nn

nWhat can I do with the API?nn

n

A whole lot; there are filters you can use to conditionally disable Autoptimize per request, to change the CSS- and JS-excludes, to change the limit for CSS background-images to be inlined in the CSS, to define what JS-files are moved behind the aggregated one, to change the defer-attribute on the aggregated JS script-tag, … There are examples for some filters in autoptimize_helper.php_example and in this FAQ.

nn

nHow does CDN work?nn

n

Starting from version 1.7.0, CDN is activated upon entering the CDN blog root directory (e.g. http://cdn.example.net/wordpress/). If that URL is present, it will used for all Autoptimize-generated files (i.e. aggregated CSS and JS), including background-images in the CSS (when not using data-uri’s).

n

If you want your uploaded images to be on the CDN as well, you can change the upload_url_path in your WordPress configuration (/wp-admin/options.php) to the target CDN upload directory (e.g. http://cdn.example.net/wordpress/wp-content/uploads/). Do take into consideration this only works for images uploaded from that point onwards, not for images that already were uploaded. Thanks to BeautyPirate for the tip!

nn

nWhy aren’t my fonts put on the CDN as well?nn

n

Autoptimize supports this, but it is not enabled by default because non-local fonts might require some extra configuration. But if you have your cross-origin request policy in order, you can tell Autoptimize to put your fonts on the CDN by hooking into the API, setting autoptimize_filter_css_fonts_cdn to true this way;

n

add_filter( 'autoptimize_filter_css_fonts_cdn', '__return_true' );n

nn

nI’m using Cloudflare, what should I enter as CDN root directorynn

n

Nothing, when on Cloudflare your autoptimized CSS/ JS is on the Cloudflare’s CDN automatically.

nn

nHow can I force the aggregated files to be static CSS or JS instead of PHP?nn

n

If your webserver is properly configured to handle compression (gzip or deflate) and cache expiry (expires and cache-control with sufficient cacheability), you don’t need Autoptimize to handle that for you. In that case you can check the “Save aggregated script/css as static files?”-option, which will force Autoptimize to save the aggregated files as .css and .js-files (meaning no PHP is needed to serve these files). This setting is default as of Autoptimize 1.8.

nn

nHow does “exclude from optimizing” work?nn

n

Both CSS and JS optimization can skip code from being aggregated and minimized by adding “identifiers” to the comma-separated exclusion list. The exact identifier string to use can be determined this way:

n

    n

  • if you want to exclude a specific file, e.g. wp-content/plugins/funkyplugin/css/style.css, you could simply exclude “funkyplugin/css/style.css”
  • n

  • if you want to exclude all files of a specific plugin, e.g. wp-content/plugins/funkyplugin/js/*, you can exclude for example “funkyplugin/js/” or “plugins/funkyplugin”
  • n

  • if you want to exclude inline code, you’ll have to find a specific, unique string in that block of code and add that to the exclusion list. Example: to exclude , the identifier is “funky_data”.
  • n

nn

nTroubleshooting Autoptimizenn

n

Have a look at the troubleshooitng instructions at https://blog.futtta.be/2022/05/05/what-to-do-when-autoptimize-breaks-your-site/

nn

nI excluded files but they are still being autoptimized?nn

n

AO minifies excluded JS/ CSS if the filename indicates the file is not minified yet. As of AO 2.5 you can disable this on the “JS, CSS & HTML”-tab under misc. options by unticking “minify excluded files”.

nn

nHelp, I have a blank page or an internal server error after enabling Autoptimize!!nn

n

Make sure you’re not running other HTML, CSS or JS minification plugins (BWP minify, WP minify, …) simultaneously with Autoptimize or disable that functionality your page caching plugin (W3 Total Cache, WP Fastest Cache, …). Try enabling only CSS or only JS optimization to see which one causes the server error and follow the generic troubleshooting steps to find a workaround.

nn

nBut I still have blank autoptimized CSS or JS-files!nn

n

If you are running Apache, the .htaccess file written by Autoptimize can in some cases conflict with the AllowOverrides settings of your Apache configuration (as is the case with the default configuration of some Ubuntu installations), which results in “internal server errors” on the autoptimize CSS- and JS-files. This can be solved by setting AllowOverrides to All.

nn

nCan’t log in on domain mapped multisitesnn

n

Domain mapped multisites require Autoptimize to be initialized at a different WordPress action, add this line of code to your wp-config.php to make it so to hook into setup_theme for example:

n

define( 'AUTOPTIMIZE_SETUP_INITHOOK', 'setup_theme' );n

nn

nI get no error, but my pages are not optimized at all?nn

n

Autoptimize does a number of checks before actually optimizing. When one of the following is true, your pages won’t be optimized:

n

    n

  • when in the customizer
  • n

  • if there is no opening tag
  • n

  • if there is in the response (indicating the output is not HTML but XML)
  • n

  • if there is in the response (as AMP-pages are optimized already)
  • n

  • if the output is an RSS-feed (is_feed() function)
  • n

  • if the output is a WordPress administration page (is_admin() function)
  • n

  • if the page is requested with ?ao_noptimize=1 appended to the URL
  • n

  • if code hooks into Autoptimize to disable optimization (see topic on Visual Composer)
  • n

  • if other plugins use the output buffer in an incompatible manner (disable other plugins selectively to identify the culprit)
  • n

nn

nVisual Composer, Beaver Builder and similar page builder solutions are broken!!nn

n

Disable the option to have Autoptimize active for logged on users and go crazy dragging and dropping 😉

nn

nHelp, my shop checkout/ payment don’t work!!nn

n

Disable the option to optimize cart/ checkout pages (works for WooCommerce, Easy Digital Downloads and WP eCommerce).

nn

nRevolution Slider is broken!nn

n

Make sure js/jquery/jquery.min.js is in the comma-separated list of JS optimization exclusions (this is excluded in the default configuration).

nn

nI’m getting “jQuery is not defined” errorsnn

n

In that case you have un-aggregated JavaScript that requires jQuery to be loaded, so you’ll have to add js/jquery/jquery.min.js to the comma-separated list of JS optimization exclusions.

nn

nI use NextGen Galleries and a lot of JS is not aggregated/ minified?nn

n

NextGen Galleries does some nifty stuff to add JavaScript. In order for Autoptimize to be able to aggregate that, you can either disable Nextgen Gallery’s resourced manage with this code snippet add_filter( 'run_ngg_resource_manager', '__return_false' ); or you can tell Autoptimize to initialize earlier, by adding this to your wp-config.php: define("AUTOPTIMIZE_INIT_EARLIER","حقيقي");

nn

nWhat is noptimize?nn

n

Starting with version 1.6.6 Autoptimize excludes everything inside noptimize tags, e.g.:
n

n

You can do this in your page/ post content, in widgets and in your theme files (consider creating a child theme to avoid your work being overwritten by theme updates).

nn

nCan I change the directory & filename of cached autoptimize files?nn

n

Yes, if you want to serve files from e.g. /wp-content/resources/aggregated_12345.css instead of the default /wp-content/cache/autoptimize/autoptimize_12345.css, then add this to wp-config.php:

n

define('AUTOPTIMIZE_CACHE_CHILD_DIR','/resources/');ndefine('AUTOPTIMIZE_CACHEFILE_PREFIX','aggregated_');n

nn

nDoes this work with non-default WP_CONTENT_URL ?nn

n

No, Autoptimize does not support a non-default WP_CONTENT_URL out-of-the-box, but this can be accomplished with a couple of lines of code hooking into Autoptimize’s API.

nn

nCan the generated JS/ CSS be pre-gzipped?nn

n

Yes, but this is off by default. You can enable this by passing ´true´ to ´autoptimize_filter_cache_create_static_gzip´. You’ll obviously still have to configure your webserver to use these files instead of the non-gzipped ones to avoid the overhead of on-the-fly compression.

nn

nWhat does “remove emojis” do?nn

n

This new option in Autoptimize 2.3 removes the inline CSS, inline JS and linked JS-file added by WordPress core. As such is can have a small positive impact on your site’s performance.

nn

nIs “remove query strings” useful?nn

n

Although some online performance assessment tools will single out “query strings for static files” as an issue for performance, in general the impact of these is almost non-existant. As such Autoptimize, since version 2.3, allows you to have the query string (or more precisely the “ver”-parameter) removed, but ticking “remove query strings from static resources” will have little or no impact of on your site’s performance as measured in (milli-)seconds.

nn

n(How) should I optimize Google Fonts?nn

n

Google Fonts are typically loaded by a “render blocking” linked CSS-file. If you have a theme and plugins that use Google Fonts, you might end up with multiple such CSS-files. Autoptimize (since version 2.3) now let’s you lessen the impact of Google Fonts by either removing them alltogether or by optimizing the way they are loaded. There are two optimization-flavors; the first one is “combine and link”, which replaces all requests for Google Fonts into one request, which will still be render-blocking but will allow the fonts to be loaded immediately (meaning you won’t see fonts change while the page is loading). The alternative is “combine and load async” which uses JavaScript to load the fonts in a non-render blocking manner but which might cause a “flash of unstyled text”.

nn

nShould I use “preconnect”nn

n

Preconnect is a somewhat advanced feature to instruct browsers (if they support it) to make a connection to specific domains even if the connection is not immediately needed. This can be used e.g. to lessen the impact of 3rd party resources on HTTPS (as DNS-request, TCP-connection and SSL/TLS negotiation are executed early). Use with care, as preconnecting to too many domains can be counter-productive.

nn

nWhen can(‘t) I async JS?nn

n

JavaScript files that are not autoptimized (because they were excluded or because they are hosted elsewhere) are typically render-blocking. By adding them in the comma-separated “async JS” field, Autoptimize will add the async flag causing the browser to load those files asynchronously (i.e. non-render blocking). This can however break your site (page), e.g. if you async “js/jquery/jquery.min.js” you will very likely get “jQuery is not defined”-errors. Use with care.

nn

nHow does image optimization work?nn

n

When image optimization is on, Autoptimize will look for png, gif, jpeg (.jpg) files in image tags and in your CSS files that are loaded from your own domain and change the src (source) to the ShortPixel CDN for those. Important: this can only work for publicly available images, otherwise the image optimization proxy will not be able to get the image to optimize it, so firewalls or proxies or password protection or even hotlinking-prevention might break image optimization.

nn

nCan I use image optimization for my intranet/ protected site?nn

n

No; Image optimization depends on the ability of the external image optimization service to fetch the original image from your site, optimize it and save it on the CDN. If you images cannot be downloaded by anonymous visitors (due to firewall/ proxy/ password protection/ hotlinking-protection), image optimization will not work.

nn

nWhere can I get more info on image optimization?nn

n

Have a look at Shortpixel’s FAQ.

nn

nCan I disable AO listening to page cache purges?nn

n

As from AO 2.4 AO “listens” to page cache purges to clear its own cache. You can disable this behavior with this filter;

n

add_filter('autoptimize_filter_main_hookpagecachepurge','__return_false');n

nn

nSome of the non-ASCII characters get lost after optimizationnn

n

By default AO uses non multibyte-safe string methods, but if your PHP has the mbstring extension you can enable multibyte-safe string functions with this filter;

n

add_filter('autoptimize_filter_main_use_mbstring', '__return_true');n

nn

nI can’t get Critical CSS workingnn

n

Check the FAQ on the (legacy) “power-up” here, this info will be integrated in this FAQ at a later date.

nn

nDo I still need the Critical CSS power-up when I have Autoptimize 2.7 or higher?nn

n

No, the Critical CSS power-up is not needed any more, all functionality (and many fixes/ improvements) are now part of Autoptimize.

nn

nWhat does “enable 404 fallbacks” do? Why would I need this?nn

n

Autoptimize caches aggregated & optimized CSS/ JS and links to those cached files are stored in the HTML, which will be stored in a page cache (which can be a plugin, can be at host level, can be at 3rd party, in the Google cache, in a browser). If there is HTML in a page cache that links to Autoptimized CSS/ JS that has been removed in the mean time (when the cache was cleared) then the page from cache will not look/ work as expected as the CSS or JS were not found (a 404 error).

n

This setting aims to prevent things from breaking by serving “fallback” CSS or JS. The fallback-files are copies of the first Autoptimized CSS & JS files created after the cache was emptied and as such will based on the homepage. This means that the CSS/ JS migth not apply 100% on other pages, but at least the impact of missing CSS/ JS will be lessened (often significantly).

n

When the option is enabled, Autoptimize adds an ErrorDocument 404 to the .htaccess (as used by Apache) and will also hook into WordPress core template_redirect to capture 404’s handled by WordPress. When using NGINX something like below should work (I’m not an NGINX specialist, but it does work for me);

n

location ~* /wp-content/cache/autoptimize/.*\.(js|css)$ {n    try_files $uri $uri/ /wp-content/autoptimize_404_handler.php;n}n

n

And this a nice alternative approach (provided by fboylovesyou);

n

location ~* /wp-content/cache/autoptimize/.*\.(css)$ {n    try_files $uri $uri/ /wp-content/cache/autoptimize/css/autoptimize_fallback.css;n}nlocation ~* /wp-content/cache/autoptimize/.*\.(js)$ {n    try_files $uri $uri/ /wp-content/cache/autoptimize/js/autoptimize_fallback.js;n}n

nn

nWhat open source software/ projects are used in Autoptimize?nn

n

The following great open source projects are used in Autoptimize in some form or another:

n

nn

nWhere can I get help?nn

n

You can get help on the wordpress.org support forum. If you are 100% sure this your problem cannot be solved using Autoptimize configuration and that you in fact discovered a bug in the code, you can create an issue on GitHub. If you’re looking for premium support, check out our Autoptimize Pro Support and Web Performance Optimization services.

nn

nI want out, how should I remove Autoptimize?nn

n

    n

  • Disable the plugin (this will remove options and cache)
  • n

  • Remove the plugin
  • n

  • Clear any cache that might still have pages which reference Autoptimized CSS/JS (e.g. of a page caching plugin such as WP Super Cache)
  • n

nn

nHow can I help/ contribute?nn

n

Just fork Autoptimize on Github and code away!

nnn", "changelog": "

3.1.12

n

    n

  • image optimization: improvements to the favicon regex
  • n

  • javascript optimization: integrate most recent version of jsmin.php
  • n

  • critical CSS: improve blocklist (url/ paths that should not be added to the job queue)
  • n

  • some other minor changes/ improvements/ filters, see the GitHub commit log.
  • n

n

3.1.11

n

n

3.1.10

n

    n

  • improvement: with “don’t aggregate but defer” and “also defer inline JS” on, also defer JS that had the async flag to avoid the (previously) asynced JS from executing before the inline JS has ran.
  • n

  • improvement: show option to disable the default on “compatibility logic”.
  • n

  • fix for regression in 3.1.9 which caused JetPack Image optimization not working even if image optimization was off in AO.
  • n

  • API: some extra hooks in critical CSS to enable others (and AOPro) to act on changes in critical CSS rules
  • n

  • some other minor changes/ improvements/ filters, see the GitHub commit log.
  • n

n

3.1.9

n

    n

  • improvement: activate JS, CSS & HTML optimization upon plugin activation (hat tip to Adam Silverstein (developer relations engineer at Google))
  • n

  • improvement: also defer asynced JS (to ensure execution order remains intact; asynced JS should not execute before deferred inline JS which it might depend upon)
  • n

  • improvement: exclude images from being lazyloaded if they have fetchpriority attribute set to high (as done by WordPress core since 6.3)
  • n

  • bugfix: disable spellcheck on CSS textarea’s (above the fold CSS/ critical CSS) which in some cases caused browser issues
  • n

  • add tab to explain Autoptimize Pro.
  • n

  • confirmed working with WordPress 6.4 (beta 3)
  • n

  • some other minor changes/ improvements/ filters, see the GitHub commit log.
  • n

n

3.1.8.1

n

    n

  • urgent fix for PHP error, sorry about that!
  • n

n

3.1.8

n

    n

  • Images: improve optmization logic for background images
  • n

  • Critical CSS: don’t trigger custom_post rule if not is_singular + adding debug logging for rule selection
  • n

  • some other minor changes/ improvements/ filters, see the GitHub commit log.
  • n

n

3.1.7

n

    n

  • security: improve validation (import) and sanitization (output) of critical CSS rules, to fix a medium severity Admin+ Stored Cross-Site Scripting vulnerability as reported by WP Scan Security.
  • n

n

3.1.6

n

    n

  • CSS: removing trailing slashes in

    n

  • Extra: also dequeue WooCommerce block CSS if “remove WordPress block CSS” option is active
  • n

  • imgopt: also act on non-aggregated inline CSS
  • n

  • imgopt: added logic to warn users if Shortpixel can’t reach their site
  • n

  • backend: AO toolbar JS/ CSS is finally minified as well.
  • n

  • explicitly disable optimization of login pages
  • n

  • some other minor changes/ improvements/ filters, see the GitHub commit log.
  • n

n

3.1.5

nn

    n

  • improvements to JSMin by Robert Ehrenleitner (big thanks Robert!).
  • n

  • do not consider jquery.js as minified any more (WordPress now uses jquery.min.js by default and jquery.js is the unminified version).
  • n

  • fix for “undefined array key” PHP errors in autoptimizeCriticalCSSCron.php
  • n

  • some other minor changes/ improvements/ filters, see the GitHub commit log.
  • n

n

3.1.4

nn

    n

  • Improvement: when all CSS is inlined, try doing so after SEO meta-tags (just before ld+json script tag which most SEO plugins add as last item on their list).
  • n

  • Img opt: also optimize images set in data-background and data-retina attributes (+ filter to easily add other attributes)
  • n

  • CSS opt: filter to enable AO to skip minification of calc formulas in CSS (as the CSS minifier on rare occasions breaks those)
  • n

  • Multiple other filters added
  • n

  • Some other minor changes/ improvements/ filters, see the GitHub commit log.
  • n

n

3.1.3

nn

    n

  • Multiple fixes for metabox LCP image preloads (thanks Kishorchand for notifying & providing a staging environment to debug on).
  • n

  • Fix in revslider compatibility (hat tip Waqar Ahmed for reporting & helping out ).
  • n

  • No image optimization or criticalcss attempts on localhost installations any more + notification of that fact if localhost detected.
  • n

  • Some other minor changes/ improvements/ filters, see the GitHub commit log.
  • n

n

3.1.2

nn

    n

  • Google Fonts: some more removal logic
  • n

  • fix for 404 fallback bug (hat tip to Asif for finding & reporting)
  • n

  • Some other minor changes/ improvements/ filters, see the GitHub commit log.
  • n

n

3.1.1.1

nn

    n

  • Quick workaround for an autoload conflict with JetFormBuilder (and maybe other Crocoblock plugins?) that causes a critical error on the AO settings page.
  • n

n

3.1.1

nn

    n

  • images: when optimizing images and lazyloading is on, then by default do not set an LQIP (low quality image placeholder) any more (reason: it might look nice but it comes with a small-ish perf. penalty). This can be re-enabled by returning true to the autoptimize_filter_imgopt_lazyload_dolqip filter.
  • n

  • security: further improvements to critical CSS settings page (again with the great assistance of WPScan Security).
  • n

  • some other minor changes/ improvements/ filters, see the GitHub commit log.
  • n

n

3.1.0

nn

    n

  • new HTML sub-option: “minify inline CSS/ JS” (off by default).
  • n

  • new Misc option: permanently allow the “do not run compatibility logic” flag to be removed (which was set for users upgrading from AO 2.9.* to AO 3.0.* as the assumption was things were working anyway).
  • n

  • security: improvements to the critical CSS settings page to fix authenticated cross site scripting issues as reported by WPScan Security.
  • n

  • bugfix: “defer inline JS” of very large chunks of inline JS could cause server errors (PCRE crash actually) so not deferring if string is more then 200000 characters (filter available).
  • n

  • some other minor changes/ improvements/ hooks, see the GitHub commit log
  • n

n

3.0.4

nn

    n

  • fix for “undefined array key ao_post_preload” on post/ page edit screens
  • n

  • fix for image optimization altering inline JS that contains an tag if lazyload is not active
  • n

  • improvements to exit survey
  • n

  • confirmed working with WordPress 6.0
  • n

n

3.0.3

nn

    n

  • fix for images being preloaded without this being configured when lazyload is on and per page/post settings are off.
  • n

  • ensure critical CSS schedule is always known.
  • n

  • when deferring non-aggregated JS, make the optimatization exclusions take the full script-tag into account instead of just the src URL.
  • n

n

3.0.2

nn

    n

  • rollback automatic “minify inline CSS/ JS” which broke more then expected, this will come back as a separate default off option later and can now be enabled with a simple filter: add_filter( 'autoptimize_html_minify_inline_js_css', '__return_true'); .
  • n

  • fix for “Call to undefined method autoptimizeOptionWrapper::delete_option()” in autoptimizeVersionUpdatesHandler.php
  • n

n

3.0.1

nn

    n

  • fix for minification of inline script with type text/template breaking the template (e.g. ninja forms), hat tip to @bobsled.
  • n

  • fix for regression in import of CSS-files where e.g. fontawesome CSS was broken due to being escaped again with help of @bobsled, thanks man!
  • n

n

3.0.0

nn

    n

  • fundamental change for new installations: by default Autoptimize will not aggregate JS/ CSS any more (HTTP/2 is ubiquitous and there are other advantages to not aggregating esp. re. inline JS/ CSS and dependancies)
  • n

  • new: no API needed any more to create manual critical CSS rules.
  • n

  • new: “Remove WordPress blocks CSS” option on the “Extra” tab to remove block- and global styles (and SVG).
  • n

  • new: compatibility logic for “edit with elementor”, “revolution slider”, for non-aggregated inline JS requiring jQuery even if not excluded (=auto-exclude of jQuery) and JS-heavy WordPress blocks (Gutenberg)
  • n

  • new: configure an image to be preloaded on a per page/ post basis for better LCP.
  • n

  • improvement: defer inline now also allowed if inline JS contains nonce or post_id.
  • n

  • improvement: settings export/ import on critical CSS tab now takes into account all Autoptimize settings, not just the critical CSS ones.
  • n

  • technical improvement: all criticalCSS classes were refactored, removing use of global variables.
  • n

  • technical improvement: automated unit tests on Travis-CI for PHP versions 7.2 to 8.1.
  • n

  • fix: stop Divi from clearing Autoptimize’s cache which is pretty counter-productive.
  • n

  • misc smaller fixes/ improvements, see the GitHub commit log
  • n

n

older

nn

n" }, "download_link": "https://downloads.wordpress.org/plugin/autoptimize.3.1.12.zip", "download_link_mirror": "https://downloads.mycloudflareproxy_domain.com/autoptimize.3.1.12.zip", "screenshots": [], "tags": { "core-web-vitals": "core web vitals", "images": "images", "optimize": "Optimize", "pagespeed": "pagespeed", "performance": "performance" }, "versions": { "0.1": "https://downloads.wordpress.org/plugin/autoptimize.0.1.zip", "0.2": "https://downloads.wordpress.org/plugin/autoptimize.0.2.zip", "0.3": "https://downloads.wordpress.org/plugin/autoptimize.0.3.zip", "0.4": "https://downloads.wordpress.org/plugin/autoptimize.0.4.zip", "0.5": "https://downloads.wordpress.org/plugin/autoptimize.0.5.zip", "0.6": "https://downloads.wordpress.org/plugin/autoptimize.0.6.zip", "0.7": "https://downloads.wordpress.org/plugin/autoptimize.0.7.zip", "0.8": "https://downloads.wordpress.org/plugin/autoptimize.0.8.zip", "0.9": "https://downloads.wordpress.org/plugin/autoptimize.0.9.zip", "1.1": "https://downloads.wordpress.org/plugin/autoptimize.1.1.zip", "1.2": "https://downloads.wordpress.org/plugin/autoptimize.1.2.zip", "1.3": "https://downloads.wordpress.org/plugin/autoptimize.1.3.zip", "1.4": "https://downloads.wordpress.org/plugin/autoptimize.1.4.zip", "1.5": "https://downloads.wordpress.org/plugin/autoptimize.1.5.zip", "1.5.1": "https://downloads.wordpress.org/plugin/autoptimize.1.5.1.zip", "1.6.0": "https://downloads.wordpress.org/plugin/autoptimize.1.6.0.zip", "1.6.1": "https://downloads.wordpress.org/plugin/autoptimize.1.6.1.zip", "1.6.2": "https://downloads.wordpress.org/plugin/autoptimize.1.6.2.zip", "1.6.3": "https://downloads.wordpress.org/plugin/autoptimize.1.6.3.zip", "1.6.4": "https://downloads.wordpress.org/plugin/autoptimize.1.6.4.zip", "1.6.5": "https://downloads.wordpress.org/plugin/autoptimize.1.6.5.zip", "1.6.6": "https://downloads.wordpress.org/plugin/autoptimize.1.6.6.zip", "1.7.0": "https://downloads.wordpress.org/plugin/autoptimize.1.7.0.zip", "1.7.1": "https://downloads.wordpress.org/plugin/autoptimize.1.7.1.zip", "1.7.2": "https://downloads.wordpress.org/plugin/autoptimize.1.7.2.zip", "1.7.3": "https://downloads.wordpress.org/plugin/autoptimize.1.7.3.zip", "1.8.0": "https://downloads.wordpress.org/plugin/autoptimize.1.8.0.zip", "1.8.1": "https://downloads.wordpress.org/plugin/autoptimize.1.8.1.zip", "1.8.2": "https://downloads.wordpress.org/plugin/autoptimize.1.8.2.zip", "1.8.3": "https://downloads.wordpress.org/plugin/autoptimize.1.8.3.zip", "1.8.4": "https://downloads.wordpress.org/plugin/autoptimize.1.8.4.zip", "1.8.5": "https://downloads.wordpress.org/plugin/autoptimize.1.8.5.zip", "1.9.0": "https://downloads.wordpress.org/plugin/autoptimize.1.9.0.zip", "1.9.1": "https://downloads.wordpress.org/plugin/autoptimize.1.9.1.zip", "1.9.2": "https://downloads.wordpress.org/plugin/autoptimize.1.9.2.zip", "1.9.3": "https://downloads.wordpress.org/plugin/autoptimize.1.9.3.zip", "1.9.4": "https://downloads.wordpress.org/plugin/autoptimize.1.9.4.zip", "2.0.0": "https://downloads.wordpress.org/plugin/autoptimize.2.0.0.zip", "2.0.1": "https://downloads.wordpress.org/plugin/autoptimize.2.0.1.zip", "2.0.2": "https://downloads.wordpress.org/plugin/autoptimize.2.0.2.zip", "2.1.0": "https://downloads.wordpress.org/plugin/autoptimize.2.1.0.zip", "2.1.1": "https://downloads.wordpress.org/plugin/autoptimize.2.1.1.zip", "2.1.2": "https://downloads.wordpress.org/plugin/autoptimize.2.1.2.zip", "2.2.0": "https://downloads.wordpress.org/plugin/autoptimize.2.2.0.zip", "2.2.1": "https://downloads.wordpress.org/plugin/autoptimize.2.2.1.zip", "2.2.2": "https://downloads.wordpress.org/plugin/autoptimize.2.2.2.zip", "2.3.0": "https://downloads.wordpress.org/plugin/autoptimize.2.3.0.zip", "2.3.1": "https://downloads.wordpress.org/plugin/autoptimize.2.3.1.zip", "2.3.2": "https://downloads.wordpress.org/plugin/autoptimize.2.3.2.zip", "2.3.3": "https://downloads.wordpress.org/plugin/autoptimize.2.3.3.zip", "2.3.4": "https://downloads.wordpress.org/plugin/autoptimize.2.3.4.zip", "2.4.0": "https://downloads.wordpress.org/plugin/autoptimize.2.4.0.zip", "2.4.1": "https://downloads.wordpress.org/plugin/autoptimize.2.4.1.zip", "2.4.2": "https://downloads.wordpress.org/plugin/autoptimize.2.4.2.zip", "2.4.3": "https://downloads.wordpress.org/plugin/autoptimize.2.4.3.zip", "2.4.4": "https://downloads.wordpress.org/plugin/autoptimize.2.4.4.zip", "2.5.0": "https://downloads.wordpress.org/plugin/autoptimize.2.5.0.zip", "2.5.1": "https://downloads.wordpress.org/plugin/autoptimize.2.5.1.zip", "2.6.0": "https://downloads.wordpress.org/plugin/autoptimize.2.6.0.zip", "2.6.1": "https://downloads.wordpress.org/plugin/autoptimize.2.6.1.zip", "2.6.2": "https://downloads.wordpress.org/plugin/autoptimize.2.6.2.zip", "2.7.0": "https://downloads.wordpress.org/plugin/autoptimize.2.7.0.zip", "2.7.1": "https://downloads.wordpress.org/plugin/autoptimize.2.7.1.zip", "2.7.2": "https://downloads.wordpress.org/plugin/autoptimize.2.7.2.zip", "2.7.3": "https://downloads.wordpress.org/plugin/autoptimize.2.7.3.zip", "2.7.4": "https://downloads.wordpress.org/plugin/autoptimize.2.7.4.zip", "2.7.5": "https://downloads.wordpress.org/plugin/autoptimize.2.7.5.zip", "2.7.6": "https://downloads.wordpress.org/plugin/autoptimize.2.7.6.zip", "2.7.7": "https://downloads.wordpress.org/plugin/autoptimize.2.7.7.zip", "2.7.8": "https://downloads.wordpress.org/plugin/autoptimize.2.7.8.zip", "2.8.0": "https://downloads.wordpress.org/plugin/autoptimize.2.8.0.zip", "2.8.1": "https://downloads.wordpress.org/plugin/autoptimize.2.8.1.zip", "2.8.2": "https://downloads.wordpress.org/plugin/autoptimize.2.8.2.zip", "2.8.3": "https://downloads.wordpress.org/plugin/autoptimize.2.8.3.zip", "2.8.4": "https://downloads.wordpress.org/plugin/autoptimize.2.8.4.zip", "2.9.0": "https://downloads.wordpress.org/plugin/autoptimize.2.9.0.zip", "2.9.1": "https://downloads.wordpress.org/plugin/autoptimize.2.9.1.zip", "2.9.2": "https://downloads.wordpress.org/plugin/autoptimize.2.9.2.zip", "2.9.3": "https://downloads.wordpress.org/plugin/autoptimize.2.9.3.zip", "2.9.4": "https://downloads.wordpress.org/plugin/autoptimize.2.9.4.zip", "2.9.5": "https://downloads.wordpress.org/plugin/autoptimize.2.9.5.zip", "2.9.5.1": "https://downloads.wordpress.org/plugin/autoptimize.2.9.5.1.zip", "3.0.0": "https://downloads.wordpress.org/plugin/autoptimize.3.0.0.zip", "3.0.1": "https://downloads.wordpress.org/plugin/autoptimize.3.0.1.zip", "3.0.2": "https://downloads.wordpress.org/plugin/autoptimize.3.0.2.zip", "3.0.3": "https://downloads.wordpress.org/plugin/autoptimize.3.0.3.zip", "3.0.4": "https://downloads.wordpress.org/plugin/autoptimize.3.0.4.zip", "3.1.0": "https://downloads.wordpress.org/plugin/autoptimize.3.1.0.zip", "3.1.1": "https://downloads.wordpress.org/plugin/autoptimize.3.1.1.zip", "3.1.1.1": "https://downloads.wordpress.org/plugin/autoptimize.3.1.1.1.zip", "3.1.10": "https://downloads.wordpress.org/plugin/autoptimize.3.1.10.zip", "3.1.11": "https://downloads.wordpress.org/plugin/autoptimize.3.1.11.zip", "3.1.12": "https://downloads.wordpress.org/plugin/autoptimize.3.1.12.zip", "3.1.2": "https://downloads.wordpress.org/plugin/autoptimize.3.1.2.zip", "3.1.3": "https://downloads.wordpress.org/plugin/autoptimize.3.1.3.zip", "3.1.4": "https://downloads.wordpress.org/plugin/autoptimize.3.1.4.zip", "3.1.5": "https://downloads.wordpress.org/plugin/autoptimize.3.1.5.zip", "3.1.6": "https://downloads.wordpress.org/plugin/autoptimize.3.1.6.zip", "3.1.7": "https://downloads.wordpress.org/plugin/autoptimize.3.1.7.zip", "3.1.8": "https://downloads.wordpress.org/plugin/autoptimize.3.1.8.zip", "3.1.8.1": "https://downloads.wordpress.org/plugin/autoptimize.3.1.8.1.zip", "3.1.9": "https://downloads.wordpress.org/plugin/autoptimize.3.1.9.zip", "trunk": "https://downloads.wordpress.org/plugin/autoptimize.zip" }, "donate_link": "http://blog.futtta.be/2013/10/21/do-not-donate-to-me/", "contributors": { "futtta": "https://profiles.wordpress.org/futtta/", "optimizingmatters": "https://profiles.wordpress.org/optimizingmatters/", "zytzagoo": "https://profiles.wordpress.org/zytzagoo/", "turl": "https://profiles.wordpress.org/turl/" } }

"-1" دير="auto"> تثبيت البرنامج المساعد WordPress التجريبي باستخدام المرآة المحلية

مثال تجريبي لتثبيت مكون WordPress الإضافي للمحرر الكلاسيكي من المرآة المحلية التي قمت بإعدادها أعلاه.

إليك تفاصيل تثبيت WordPress التجريبي.

/usr/local/nginx/conf/wpincludes/wp.domain.com/wpinfo.shWP-CLI 2.11.0WP-Home    https://wp.domain.comWP-SiteURL https://wp.domain.comWordPress  version:   6.6.2   Database   revision:  57155   TinyMCE    version:   4.9110  (49110-20201110)Package    language:  en_US   +--------+---------------------------+--------------+---------------------------+--------------------------------+---------------+| ID     | user_login                | display_name | user_email                | user_registered                | roles         |+--------+---------------------------+--------------+---------------------------+--------------------------------+---------------+| 270422 | zfTHxZdCjyOI2Wc1ijVyyhFKc | George       | user@domain.com           |                                |               |+--------+---------------------------+--------------+---------------------------+--------------------------------+---------------++----------------------+------------------------------------------------------------------+----------+| name                 | value                                                            | type     |+----------------------+------------------------------------------------------------------+----------+| table_prefix         | 27994_                                                           | variable || WP_CACHE             | 1                                                                | constant || DB_NAME              | wp27714970db_217913                                              | constant || DB_USER              | wpdb2179u289199                                                  | constant || DB_PASSWORD          | wpdbguZLh7nyyBfs82rD0tdrAgp31550                                 | constant || DB_HOST              | localhost                                                        | constant || DB_CHARSET           | utf8                                                             | constant || DB_COLLATE           |                                                                  | constant || DISABLE_WP_CRON      |                                                                  | constant || WP_AUTO_UPDATE_CORE  | minor                                                            | constant || WP_POST_REVISIONS    | 10                                                               | constant || EMPTY_TRASH_DAYS     | 10                                                               | constant || WP_CRON_LOCK_TIMEOUT | 60                                                               | constant || CONCATENATE_SCRIPTS  |                                                                  | constant || AUTH_KEY             |>EIS=P]/9ZNYZXeP:Rq<57n.}g@g+6}pylPKce8?G4~#P]cO`ar]t+qq%lA6]>Xh1U|z1:6z/wQ,!{jfLWiN/4D!~*utpTvD24d!CHXHsh!:Dc(S7}4eYf: | constant || NONCE_KEY            | 8<~A#rc3Za,A(K*Ai`V6W+1bM|J98W#mJqV4zuVUsMWXWK-L* 4PQoop0nJ;%]yp | constant || AUTH_SALT            | `Y$8(lcu3nqF+:?6=;W{SbQS/=Qz#,-Yw@bbCn,V!U92BnyeVX^Q]X,4M:i[x!c7 | constant || SECURE_AUTH_SALT     | bZ$CUXQR.@T7]~H?6ZwZ(bWsTL$-X+=5d??gT^iomZ+U[v&k>Ii$W^aprwH?*0d0 | constant || LOGGED_IN_SALT       | t8$akq.p.ph^&roH|7p,aGp7Q%?ap!cM:zA/?FO`Ce-1_aHfoeiZs4Wqi`:#Vrl] | constant || NONCE_SALT           | .>-51kySB$p}$yLS^~y9zkz[73g7#ifx3RoVG7,e?iaol<<7}98[]l!SmrD|$s=z | constant || WP_CACHE_KEY_SALT    | (>4Q3dQ8F]&VZ>>v.xj-_(j}#<#ThY_[ S)aS2X4XssI | constant || WP_DEBUG             |                                                                  | constant |+----------------------+------------------------------------------------------------------+----------++-------------------------------+----------+--------+---------+----------------+-------------+| name                          | status   | update | version | update_version | auto_update |+-------------------------------+----------+--------+---------+----------------+-------------+| autoptimize                   | active   | none   | 3.1.12  |                | off         || disable-xml-rpc               | active   | none   | 1.0.1   |                | off         || sucuri-scanner                | active   | none   | 1.9.5   |                | off         |+-------------------------------+----------+--------+---------+----------------+-------------++-------------------+----------+--------+---------+----------------+-------------+| name              | status   | update | version | update_version | auto_update |+-------------------+----------+--------+---------+----------------+-------------+| twentytwentyfour  | active   | none   | 1.2     |                | off         || twentytwentythree | inactive | none   | 1.5     |                | off         || twentytwentytwo   | inactive | none   | 1.8     |                | off         |+-------------------+----------+--------+---------+----------------+-------------+

قم بتثبيت WordPress من المرآة المحلية الخاصة بي المستضافة على وحدة تخزين كائنات Cloudlare R2 S3 المدعومة بالتخزين المؤقت لـ Cloudflare CDN. يمكنك الاستعلام عن بيانات تعريف JSON الخاصة بـ WordPress أو المرآة المحلية للحصول على ملف مضغوط لعنوان url للتنزيل.

  • معكوسة المحلية: https://api.mycloudflareproxy_domain.com/plugins/info/1.0/classic-editor.json
  • نقطة نهاية واجهة برمجة تطبيقات WordPress الأصلية: https://api.wordpress.org/plugins/info/1.0/classic-editor.json

بما أنني قمت بتعديل بيانات تعريف JSON المحفوظة لإدراج حقل إضافي لها download_link_mirror والذي يسرد أيضًا عنوان URL للتنزيل المتطابق لمكون WordPress الإضافي بالإضافة إلى عنوان URL الموجود download_link رابط التحميل.

حليقة -s https://api.mycloudflareproxy_domain.com/plugins/info/1.0/classic-editor.json | جق -ص '[.download_link, .download_link_mirror]'[  "https://downloads.wordpress.org/plugin/classic-editor.1.6.5.zip",  "https://downloads.mycloudflareproxy_domain.com/classic-editor.1.6.5.zip"]

إذا قمت بالاستعلام عن البيانات التعريفية لـ WordPress.org JSON، فستحصل على عنوان url الرسمي لتنزيل البرنامج الإضافي المضغوط أيضًا.

حليقة -s https://api.wordpress.org/plugins/info/1.0/classic-editor.json | جق -ص '[.download_link]'[  "https://downloads.wordpress.org/plugin/classic-editor.1.6.5.zip"]

دعنا نحصل على الملف المضغوط للمكون الإضافي للمحرر الكلاسيكي الخاص بالمرآة من خلال ملف بيانات تعريف JSON المعكوس.

curl -s https://api.mycloudflareproxy_domain.com/plugins/info/1.0/classic-editor.json | jq -r '.download_link_mirror'https://downloads.mycloudflareproxy_domain.com/classic-editor.1.6.5.zip

تحميل wget مكتوبة

download=$(curl -s https://api.mycloudflareproxy_domain.com/plugins/info/1.0/classic-editor.json | jq -r '.download_link_mirror')wget -S $download
]19.23 ألف --.- كيلو بايت/ثانية في 0.001 ثانية 2024-10-05 22:13:49 (23.7 ميجابايت/ثانية) - تم حفظ 'classic-editor.1.6.5.zip' [19693/19693]">

wget -S $download --2024-10-05 22:13:49-- https://downloads.mycloudflareproxy_domain.com/classic-editor.1.6.5.zip حل downloads.mycloudflareproxy_domain.com (downloads.mycloudflareproxy_domain.com) )... 104.xx.xxx.xxx, 104.xx.xxx.xxx, 2606:xxx.xxx.xxx, ... الاتصال بـ downloads.mycloudflareproxy_domain.com (downloads.mycloudflareproxy_domain.com)|104.xx. xxx.xxx|:443... متصل. تم إرسال طلب HTTP، في انتظار الرد... HTTP/1.1 200 OK التاريخ: السبت، 05 أكتوبر 2024 22:13:49 بتوقيت جرينتش نوع المحتوى: application/zip طول المحتوى: 19693 الاتصال: Keep-alive ETag: "563ed3f42294d2b34a82eeb0249eb204"  آخر تعديل: الثلاثاء، 01 أكتوبر 2024، 16:06:32 توقيت جرينتش المتغير: قبول ترميز CF-Cache-Status: HIT العمر: 296 انتهاء الصلاحية: الثلاثاء، 05 نوفمبر 2024 22:13:49 بتوقيت جرينتش التحكم في ذاكرة التخزين المؤقت: عام، الحد الأقصى -age=2678400 قبول-النطاقات: بايت الخادم: cloudflare CF-RAY: 8ce0c2d9086808da-LAX الطول: 19693 (19 كيلو بايت) [application/zip]الحفظ في: 'classic-editor.1.6.5.zip' classic-editor.1.6.5.zip 100%[========================================================>]  19.23 ألف --.- كيلو بايت/ثانية في 0.001 ثانية 2024-10-05 22:13:49 (23.7 ميجابايت/ثانية) - تم حفظ 'classic-editor.1.6.5.zip' [19693/19693]

لدينا الآن ثلاث طرق لتثبيت المكون الإضافي للمحرر الكلاسيكي باستخدام أمر تثبيت المكون الإضافي الأصلي لأداة WP CLI"https://developer.wordpress.org/cli/commands/plugin/install/" rel="nofollow"> https://developer.wordpress.org/cli/commands/plugin/install/:

  1. قم بتثبيت البرنامج المساعد Zip باستخدام مصدر تنزيل WordPress.org الافتراضي
  2. التثبيت من النسخة المحلية التي تم تنزيلها من ملف مضغوط للبرنامج المساعد
  3. التثبيت من ملف مضغوط للمكون الإضافي لخادم المرآة البعيدة

"-1" دير="auto">1. قم بالتثبيت باستخدام مصدر تنزيل wordpress.org الافتراضي

إشعار تثبيت الحزمة من https://downloads.wordpress.org/plugin/classic-editor.1.6.5.zip.

wp plugin install classic-editor
wp plugin install classic-editorInstalling Classic Editor (1.6.5)Downloading installation package from https://downloads.wordpress.org/plugin/classic-editor.1.6.5.zip...Using cached file '/root/.wp-cli/cache/plugin/classic-editor-1.6.5.zip'...Unpacking the package...Installing the plugin...Plugin installed successfully.Success: Installed 1 of 1 plugins.

وقم بتنشيطه (نعم يمكننا إجراء التثبيت والتنشيط في أمر واحد أيضًا)

wp plugin activate classic-editorPlugin 'classic-editor' activated.Success: Activated 1 of 1 plugins.

"-1" دير="auto">2. التثبيت من النسخة المحلية التي تم تنزيلها من ملف مضغوط للبرنامج المساعد

wp plugin install ./classic-editor.1.6.5.zip
wp plugin install ./classic-editor.1.6.5.zipUnpacking the package...Installing the plugin...Plugin installed successfully.Success: Installed 1 of 1 plugins.

تفعيله

wp plugin activate classic-editorPlugin 'classic-editor' activated.Success: Activated 1 of 1 plugins.

"-1" دير="auto">3. التثبيت من ملف مضغوط للمكون الإضافي لخادم المرآة البعيدة

لاحظ تثبيت البرنامج المساعد المضغوط من نسخة معكوسة محلية على https://downloads.mycloudflareproxy_domain.com/classic-editor.1.6.5.zip.

wp plugin install https://downloads.mycloudflareproxy_domain.com/classic-editor.1.6.5.zip
wp plugin install https://downloads.mycloudflareproxy_domain.com/classic-editor.1.6.5.zipDownloading installation package from https://downloads.mycloudflareproxy_domain.com/classic-editor.1.6.5.zip...Unpacking the package...Installing the plugin...Plugin installed successfully.Success: Installed 1 of 1 plugins.

تفعيله

wp plugin activate classic-editorPlugin 'classic-editor' activated.Success: Activated 1 of 1 plugins.

التحقق من قائمة المكونات الإضافية المثبتة في WordPress

wp plugin list+-------------------------------+----------+--------+---------+----------------+-------------+| name                          | status   | update | version | update_version | auto_update |+-------------------------------+----------+--------+---------+----------------+-------------+| akismet                       | inactive | none   | 5.3.3   |                | off         || autoptimize                   | active   | none   | 3.1.12  |                | off         || classic-editor                | inactive | none   | 1.6.5   |                | off         || disable-xml-rpc               | active   | none   | 1.0.1   |                | off         || sucuri-scanner                | active   | none   | 1.9.5   |                | off         |+-------------------------------+----------+--------+---------+----------------+-------------+

للحصول على إشعارات التحديث، يمكنك كتابة برنامج نصي يقرأ قائمة المكونات الإضافية لتثبيتات WordPress باستخدام أداة WP CLI واستخدام حالة المكون الإضافي WP CLI"https://developer.wordpress.org/cli/commands/plugin/status/" rel="nofollow">https://developer.wordpress.org/cli/commands/plugin/status/ للتحقق من وجود تحديثات أو البرنامج النصي للتحقق من خلال استعلام بيانات تعريف JSON المتطابقة وتشغيل أمر تحديث البرنامج المساعد WP CLI"https://developer.wordpress.org/cli/commands/plugin/update/" rel="nofollow">https://developer.wordpress.org/cli/commands/plugin/update/. بالنسبة للإشعارات الإضافية، يمكن للبرنامج النصي إعداد إشعارات الدفع على الهاتف المحمول/الجهاز اللوحي عبر خدمات مثل Pushover.net لتنبيهك بالتحديثات الجديدة والتحديثات الناجحة/الفاشلة وما إلى ذلك.

"-1" دير="auto"> لقطات الشاشة

استخدام Github Workflow لأتمتة البرنامج النصي.

"_blank" rel="noopener noreferrer" href="http://github.com/centminmod/wordpress-plugin-mirror-poc/blob/master/screenshots/get_plugins_r2_workflow-01.png">"http://github.com/centminmod/wordpress-plugin-mirror-poc/raw/master/screenshots/get_plugins_r2_workflow-01.png" البديل="Github Workflow">

"_blank" rel="noopener noreferrer" href="http://github.com/centminmod/wordpress-plugin-mirror-poc/blob/master/screenshots/get_plugins_r2_workflow-02.png">"http://github.com/centminmod/wordpress-plugin-mirror-poc/raw/master/screenshots/get_plugins_r2_workflow-02.png" البديل="Github Workflow">

مثال على مستودعات Cloudflare R2 S3 المملوءة بالكل"http://github.com/#cached-plugin"> ملفات مضغوطة لمكونات WordPress الإضافية و"http://github.com/#mirrored-wordpress-plugin-api-end-point"> ملفات البيانات التعريفية JSON باستخدام S3Browser لعرض القوائم.

"_blank" rel="noopener noreferrer" href="http://github.com/centminmod/wordpress-plugin-mirror-poc/blob/master/screenshots/allplugins-get_plugins_r2_s3browser-listing-plugins-01.png">"http://github.com/centminmod/wordpress-plugin-mirror-poc/raw/master/screenshots/allplugins-get_plugins_r2_s3browser-listing-plugins-01.png" البديل="Cloudflare R2 S3 Bucket">

"_blank" rel="noopener noreferrer" href="http://github.com/centminmod/wordpress-plugin-mirror-poc/blob/master/screenshots/allplugins-get_plugins_r2_s3browser-listing-plugins-json-metadata-01.png">"http://github.com/centminmod/wordpress-plugin-mirror-poc/raw/master/screenshots/allplugins-get_plugins_r2_s3browser-listing-plugins-json-metadata-01.png" البديل="Cloudflare R2 S3 Bucket">

"http://github.com/#mirrored-plugin-checksums"> البرنامج المساعد واجهة برمجة تطبيقات المجموع الاختباري بيانات معكوسة أي في https://downloads.mycloudflareproxy_domain.com/plugin-checksums/autoptimize/3.1.12.json والذي يهدف إلى تكرار إصدار WordPress.org على https://downloads.wordpress.org/plugin-checksums/autoptimize/3.1.2.json.

"_blank" rel="noopener noreferrer" href="http://github.com/centminmod/wordpress-plugin-mirror-poc/blob/master/screenshots/allplugins-get_plugins_r2_s3browser-listing-plugins-checksums-01.png">"http://github.com/centminmod/wordpress-plugin-mirror-poc/raw/master/screenshots/allplugins-get_plugins_r2_s3browser-listing-plugins-checksums-01.png" البديل="Plugin Checksums in Cloudflare R2 S3 Bucket">

"_blank" rel="noopener noreferrer" href="http://github.com/centminmod/wordpress-plugin-mirror-poc/blob/master/screenshots/get_plugins_r2_s3browser-listing-plugins-checksums-02.png">"http://github.com/centminmod/wordpress-plugin-mirror-poc/raw/master/screenshots/get_plugins_r2_s3browser-listing-plugins-checksums-02.png" البديل="Plugin Checksums in Cloudflare R2 S3 Bucket">

تم إيقاف العد ويبدو أن بعض أسماء المكونات الإضافية غير إنجليزية ويجب أن يأخذ البرنامج النصي في الاعتبار هذا:

Error: Invalid plugin slug. for plugin 海阔淘宝相关宝贝插件Skipping 海阔淘宝相关宝贝插件 due to version fetch error.

"-1" دير="auto"> مولد واجهة برمجة تطبيقات المفاتيح السرية لـ WordPress

لا يتعلق الأمر ببرنامج WordPress الإضافي، ولكن يمكنك أيضًا إعداد عامل Cloudflare منفصل يقوم بنسخ واجهة برمجة التطبيقات (وليس الوكيل) لمولد المفاتيح السرية لـ wp-config.php.

الأصل

عامل Cloudflare

  • https://api.mycloudflareproxy_domain.com/secret-key/1.0/
  • https://api.mycloudflareproxy_domain.com/secret-key/1.1/
  • https://api.mycloudflareproxy_domain.com/secret-key/1.1/salt/

curl -s https://api.mycloudflareproxy_domain.com/secret-key/1.0/define('SECRET_KEY', '(r&lIZV-.8/@jc?t[>D~xZTPuIq.B2GFF>Mc.-Gu%+yg36YMjyqJe.:4WYo4<~ig');
u]R$'); تعريف('SECURE_AUTH_KEY', '4qpO5+&mC#0fT?sAb2p[D+qw`f<%{w56s4*(8pY`Rd{}[D+qw`f<%{w56s4*(8pY`Rd{}<~N*wS6EUGj-?/q@M,B1');define('LOGGED_IN_KEY', 'qMj7-!R2B,L>wQN9_/){8l(:1Ur@&m1]/&C=4 GZgKj4H(#/ha[`#7w~');تعريف('NONCE_KEY''7(eOLM[3>8E2)JtorRGm?mhB@EW136oK+UKqh3B-#TiJWE{TA_*lf0+zFcz@X5^');[3>8E2)JtorRGm?mhB@EW136oK+UKqh3B-#TiJWE{TA_*lf0+zFcz@X5^');">

curl -s https://api.mycloudflareproxy_domain.com/secret-key/1.1/define('AUTH_KEY', 'x+%Hff>o}T^jaNbyh*[S`C&wTOF Ygqku]R$');define('SECURE_AUTH_KEY', '4qpO5+&mC#0fT?sAb2p[D+qw`f<%{w56s4*(8pY`Rd{}<~N*wS6EUGj-?/q@M,B1');define('LOGGED_IN_KEY', 'qMj7-!R2B,L>wQN9_/){8l(:1Ur@&m1]/&C=4 GZgKj4H(#/ha[`#7w~');define('NONCE_KEY', '7(eOLM[3>8E2)J,torRGm?mhB@EW136oK+UKqh3B-#TiJWE{TA_*lf0+zFcz@X5^');

curl -s https://api.mycloudflareproxy_domain.com/secret-key/1.1/salt/define('AUTH_KEY', 'J0:Lo?H4}F&s(Qj}seebJ`H,R!ntuELcmn2aIx(&sc5GabjGU(h-dp^IQ6MfnKqI');define('SECURE_AUTH_KEY', 'ywn%1U3;NySz3jT+m|Y;Xin{+Za7Uh^8][VIVwW,?t!{:nksrC=3|.UFQG^Zs&uA');define('LOGGED_IN_KEY', 'm<[y_4sW$Kuc>E$3^/q>2Dg{SV@9L*~a&lW#<_.Rr$5cnz:6j9i;@NYy?C[%WF-');define('NONCE_KEY', 'jn$?ao_n+gk+2I?s}Pv13bd}:yr$-1$XtO??4kBvsl5:a6ZylXOn3=NdGx%+*lOp');define('AUTH_SALT', 'MA<4uGqc`biF-%d.|@!lKEeB<`V)q0rZn->ZvEAf#s9Ysqg=Wt%>0<@Ar-*TnPS?');define('SECURE_AUTH_SALT', 'yW})O/%Q$YAW|1~[Y2?yinMw &U<');define('LOGGED_IN_SALT', 'gt,yqP|J7pA8yd)~JhSA>[L&p1r$G/H=(9P(CWqR=a([N&h');define('NONCE_SALT', 'X_c%R1Aqaw:.mO^Mr(J}[?ly-dScByC*0v*gafH>C#ptX~{Y?jU?C&C:%)GV;J}~');

اقرأ المزيد

حصلت PicsMatic على مكان في قائمة DesignRush لأفضل وكالات تصميم الجرافيك في المملكة المتحدة
Marketgoo وMijndomein يطلقان عرضًا جديدًا لـ WordPress SEO

Reactions

0
0
0
0
0
0
بالفعل كان رد فعل لهذا المنصب.

ردود الفعل