Ghateino
در شرایط قطعی اینترنت یا نیاز به قطع کردن درخواست ها به وبسایت های خاص بهترین گزینه شما افزونه قطعینو هست
Install
No release zip yet. The repository archive installs, but the folder name will carry the branch suffix and updates will not flow:
wp plugin install https://github.com/shokrino/ghateino/archive/refs/heads/main.zipReadme
Ghateino (قطعینو)
Ghateino یک افزونه وردپرس برای مدیریت درخواست های خارجی و کاهش وابستگی به CDN در شرایط اینترنت ناپایدار است.
رویکرد افزونه:
Local First + Block Fast
- اگر asset خارجی نگاشت محلی داشته باشد، سریع به نسخه محلی rewrite می شود.
- اگر نگاشت محلی وجود نداشته باشد و حالت سخت گیرانه فعال باشد، درخواست خارجی سریع بلاک می شود.
مزیت اصلی
در شرایط اختلال اینترنت، Ghateino باعث می شود:
- زمان انتظار برای requestهای خارجی کمتر شود.
- رفتار سایت قابل پیش بینی تر باشد.
- وابستگی به CDNهای خارجی کاهش یابد.
- مسیر عیب یابی از طریق لاگ ها ساده تر شود.
قابلیت ها
1) کنترل HTTP خروجی
سه حالت کاری:
disabled: بدون محدودیتwhitelist: فقط دامنه های مجازblacklist: مسدودسازی دامنه های مشخص
امکانات تکمیلی:
- محدودسازی timeout درخواست های خارجی
- غیرفعال سازی telemetry وردپرس (
wordpress.org) - غیرفعال سازی بررسی آپدیت هسته/قالب/افزونه
- امکان استثنا برای آپدیت از دامنه های whitelist
- جایگزینی Gravatar با تصویر محلی
- لاگ گیری با retention و سقف تعداد رکورد
2) بازنویسی assetهای خارجی به نسخه محلی
موارد پشتیبانی شده:
- WP Core JS:
jquery,jquery-migrate,underscore,backbone,react,react-dom Swiper(CSS/JS)Ace Editor(ace.min.js,ext-language_tools.js)Font Awesome(all.min.css,v4-shims.min.css)Google Fonts(Roboto / Vazirmatn)dashicons(CSS + fonts)eicons(Elementor Icons)
3) بلاک سخت گیرانه asset خارجی
اگر strict_asset_block فعال باشد، هر CSS/JS خارجی بدون نگاشت محلی با fallback داخلی جایگزین می شود:
assets/js/blocked-asset.jsassets/css/blocked-asset.css
4) ایزوله سازی Mixpanel
دامنه های رایج Mixpanel بلاک می شوند:
api-eu.mixpanel.comapi.mixpanel.comcdn.mxpnl.comapi-js.mixpanel.com
و script با نسخه امن داخلی جایگزین می شود:
assets/js/mixpanel-stub.js
5) بهینه سازی جدید عملکرد (نسخه فعلی)
- آماده سازی assetهای محلی فقط یک بار به ازای هر نسخه افزونه انجام می شود.
- اسکن بازگشتی سنگین کل
wp-contentبرای پیدا کردن فایل ها حذف شده است.
نتیجه: کاهش overhead در runtime و پایداری بهتر روی هاست های shared یا کند.
نصب
- پوشه افزونه را در
wp-content/plugins/ghateinoقرار دهید. - افزونه را از پنل وردپرس فعال کنید.
- مسیر
Settings -> قطعینورا باز کنید. - تنظیمات را ذخیره کنید.
راهنمای تنظیمات پیشنهادی
سناریوی عمومی (ایمن)
mode = disabledlocal_asset_rewrite = yesstrict_asset_block = yesenable_timeout_guard = yesmax_request_timeout = 3
سناریوی اینترنت محدود
mode = whitelist- دامنه های ضروری را در whitelist وارد کنید.
- در صورت نیاز
allow_whitelisted_updates = yesرا فعال نگه دارید.
سناریوی عیب یابی
- موقت
enable_logging = yes - در صورت نیاز
log_asset_events = yes - پس از تثبیت تنظیمات، لاگ گیری را محدود یا غیرفعال کنید.
توسعه دهنده ها
هوک های کلیدی وردپرس
pre_http_requesthttp_request_argsscript_loader_srcstyle_loader_src
فیلتر توسعه پذیری Ghateino
ghateino_local_script_rewrite
امضای فیلتر:
apply_filters( 'ghateino_local_script_rewrite', '', $path, $original_src );
نمونه صحیح:
add_filter('ghateino_local_script_rewrite', function ($replacement, $path, $original_src) {
if (strpos($path, '/custom-lib.min.js') !== false) {
return plugin_dir_url(__FILE__) . 'assets/vendor/custom/custom-lib.min.js';
}
return $replacement;
}, 10, 3);
نکات سازگاری
- اگر asset خاصی باید external باقی بماند،
strict_asset_blockرا خاموش کنید یا برای آن نگاشت محلی اضافه کنید. - اگر Customizer استفاده می شود، بازنویسی asset در context مربوط به customizer bypass می شود.
- برای سایت های پربازدید، روشن نگه داشتن دائمی
log_asset_eventsتوصیه نمی شود.
ساختار مسیرهای مهم
ghateino.phpassets/js/blocked-asset.jsassets/js/mixpanel-stub.jsassets/css/blocked-asset.cssassets/vendor/wp-core-js/assets/vendor/swiper/assets/vendor/ace-builds/assets/vendor/fontawesome/assets/vendor/google-fonts/assets/vendor/dashicons/assets/vendor/eicons/
نسخه
1.2.0
توسعه دهنده
- Shokrino Team
- https://shokrino.com
Read the full README on GitHub →
Releases
These releases are tags only. The author does not attach a packaged zip, so there are no download counts to report.