سیدکریم محمدی
سیدکریم محمدی
خواندن ۲ دقیقه·۴ سال پیش

بهینه‌سازی سایت وردپرسی و خطای Content-Encoding در GTMetrix

اگر در مسیر آنالیز وب‌سایت وردپرسی خودتون به وسیلۀ سرویس GTMetrix دچار مشکل شدید و این سرویس خطای Content-Encoding رو گزارش می‌کنه، با من همراه باشید.

در جریان بهینه‌سازی وب‌سایت fitlady.ir، متوجه بروز اشکالی در آنالیز وب‌سایت توسط GTMetrix شدم و پس از بررسی‌های بسیار به یک راه‌حل عملی رسیدم.

لازمه بدونید که در این سایت وردپرسی، من از WP Rocket برای بهینه‌سازی و از ابرآروان به عنوان CDN و همچنین از هاست میزبان‌فا برای میزبانی سایت استفاده کردم.

اولین اقدام من جهت بررسی علت این مشکل، غیرفعال‌سازی افزونه WP Rocket بود که مشخص شد با غیرفعال‌سازی این افزونه مشکل رفع میشه. ولی چرا؟

افزونه رو دوباره فعال کردم و اینبار حالت‌های مختلف Compression رو یکی به یکی غیرفعال کردم تا اینکه متوجه شدم با غیرفعال‌سازی حالت فشرده‌سازی HTML، خطای GTMetrix رفع میشه. عجب!

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

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

وجه اشتراک مشخص بود ولی تفاوت اصلی هاست اشتراکی میزبان‌فا با دیگر هاستینگ‌ها مثل ایران‌سرور در چی بود؟!

خب خیلی طول نکشید که به این تفاوت مهم پی بردم و اون روش Content-Compression در نظر گرفته‌شده روی میزبان‌فا هست؛ یعنی روش فشرده‌سازی Brotli.

https://virgool.io/@skmohammadi/%D8%A7%D9%81%D8%B2%D9%88%D9%86%D9%87-syntax-highlighter-%D8%A8%D8%B1%D8%A7%DB%8C-%D9%88%DB%8C%D8%B1%DA%AF%D9%88%D9%84-xpu1h4keneax

روش فشرده‌سازی Brotli به جای GZIP!!!

واقعاً تا حالا چیزی در مورد Brotli نشنیده بودم و پس از جستجو در گوگل متوجه شدم که روش بسیار جدید فشرده‌سازی فایل‌های متنی مثل php و html و css و js و... هست که توسط شرکت گوگل ارائه شده و نسبت به GZIP خیلی برتری داره (منبع).

وضعیت پاسخ سرور به کلاینت و فعال‌بودن Brotli به جای GZip
وضعیت پاسخ سرور به کلاینت و فعال‌بودن Brotli به جای GZip


در ابتدای مقاله اشاره کردم که این مشکل تنها در صورت فعال‌بودن فشرده‌سازی HTML در WP Rocket رخ میده. طبق معمول شروع به جستجو کردم و تقریباً به این نتیجه رسیدم که WP Rocket تنظیماتی که در htaccess. اعمال می‌کنه مربوط به GZIP هست و یکی از دستورالعمل‌هایی که برای فشرده‌سازی HTML در فایل htaccess. اعمال می‌کنه، دستور زیر هست:

RewriteRule .* &quot/wp-content/cache/wp-rocket/%{HTTP_HOST}%{REQUEST_URI}/index%{ENV:WPR_SSL}%{ENV:WPR_WEBP}.html%{ENV:WPR_ENC}&quot [L]

این قطعه کد رو بدون درنگ پاک کردم و برای جلوگیری از ویرایش‌شدن دوباره اون توسط WP Rocket، سطح دسترسی فایل htaccess. رو به 444 تغییر دادم و پایان ماجرا.

لینک گزارش اینجا
لینک گزارش اینجا

چند نکته:

  • راه حل پیشنهادشده مبتنی بر نتایج تحقیقات من در تالارهای تخصصی وردپرس هست.
  • همچنان به دنبال روشن‌شدن علت اصلی این مشکل و رفع اصولی اون هستم.
  • در صورتی که اطلاعات دقیقی در این خصوص دارید یا اطلاعاتی دارید که می‌تونه رفع ابهام کنه، حتما مطرح کنید.


وردپرسبهینه‌سازیgtmetrixwp rocketمیزبان فا
یک پدر برنامه‌نویس و عاشق خانواده (تماس: @skmohammadi)
شاید از این پست‌ها خوشتان بیاید