میزبانی و افزونه‌های WordPress

سریع و امن کردن WordPress: چک‌لیست عملکرد و افزونه‌ها

سرعت و امنیت WordPress همواره به بستری وابسته است که آن را اجرا می‌کند. در اینجا چک‌لیست کاربردی را که برای هر وب‌سایت WordPress تحت میزبانی خود به کار می‌بریم آورده‌ایم — چه مواردی را باید ذخیره موقت کرد، چه مواردی را باید ایمن ساخت و کدام افزونه‌ها در مقایسه با مواردی که پلتفرم آن‌ها را غیرضروری می‌کند ارزش استفاده دارند.

کارایی WordPress دقیقاً به اندازه سیستمی است که آن را اجرا می‌کند

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

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

حافظه پنهان در سرور، نه فقط در یک افزونه

بزرگ‌ترین اهرم منفرد برای سرعت WordPress این است که برای اکثر بازدیدها، WordPress اصلاً اجرا نشود. یک درخواست استاندارد، پیش از ارسال حتی یک بایت، WordPress را راه‌اندازی می‌کند، افزونه‌های شما را اجرا می‌نماید و از پایگاه داده پرس‌وجو می‌کند؛ یک کش تمام‌صفحه، در بازدید بعدی صفحهٔ آماده را مستقیماً از وب‌سرور ارائه می‌دهد و از کل این فرایند راه‌اندازی صرف‌نظر می‌کند. محل قرارگیری این کش اهمیت دارد: افزونهٔ کش در داخل PHP قرار دارد، بنابراین PHP همچنان پیش از پاسخ دادن کش شروع به کار می‌کند، در حالی که کش سطح سرور در مراحل اولیهٔ درخواست پاسخ می‌دهد و صفحات را به شکلی نگه می‌دارد که سرور بتواند فوراً آن‌ها را پاک‌سازی کند.

هر سایت WordPress که میزبانی می‌کنیم روی LiteSpeed Enterprise به همراه LSCache در سطح سرور اجرا می‌شود، و افزونه کش اختصاصی ما WordPress را بدون نیاز به تنظیمات اضافی و به درستی به آن متصل می‌کند — از پیش نصب شده و به‌طور خودکار به‌روزرسانی می‌شود، بنابراین یک مورد کمتر برای پیکربندی یا به‌روز نگه‌داشتن وجود دارد. در یک مبدأ غیر از LiteSpeed، همین افزونه صرفاً هیچ هدر صفحه کاملی منتشر نمی‌کند و در حالی که کش اشیاء به کار خود ادامه می‌دهد، دخالتی نمی‌کند؛ بنابراین یک سایت مهاجرت‌داده‌شده هرگز نیمه‌پیکربندی رها نمی‌شود. قاعده عملی برای چک‌لیست خودتان: یک کش کامل صفحه در سرور، و افزونه کش دومی روی آن اضافه نکنید — آن‌ها با یکدیگر تداخل دارند.

حافظه پنهان شیء و پایگاه داده

همه درخواست‌ها نمی‌توانند یک صفحه ایستا باشند. نشست‌های واردشده، بخش مدیریت، جستجو، سبدهای خرید و هر بخش شخصی‌سازی‌شده باید PHP را اجرا کنند، و برای آنها هدف از نادیده گرفتن برنامه به نادیده گرفتن پایگاه داده تغییر می‌یابد. یک حافظه پنهان شیء برای هر سایت — Redis در مورد ما — نتایج خواندن‌های مکرر پایگاه داده را در حافظه نگه می‌دارد، بنابراین همان گزینه‌ها، داده‌های گذرا و جستجوها در هر بازدید از پایگاه داده پرس‌وجو نمی‌شوند. تأثیر آن دقیقاً در جایی ظاهر می‌شود که حافظه پنهان کامل صفحه نمی‌تواند کمکی کند: مدیریتی سریع‌تر، سبدهای خرید سریع‌تر و بار بسیار کمتر پایگاه داده در شرایط ترافیک بالا.

کلمه کلیدی «به‌ازای هر سایت» (per-site) است. یک حافظه پنهان اشیاء مشترک (shared object cache) به این معنی است که یک سایت شلوغ یا بدبرنامه‌نویسی‌شده می‌تواند داده‌های کش‌شده دیگران را حذف کند و پایگاه داده را از دسترس همسایگان خود خارج سازد؛ یک حافظه پنهان اختصاصی به‌ازای هر سایت، همراه با محدودیت‌های پایگاه داده برای هر سایت، دامنه آسیب را مهار می‌کند. در چک‌لیست خود، حافظه پنهان اشیاء دائمی را برای هر سایتی که کاربران واردشده یا فروشگاه دارد اجباری بدانید و نسبت به میزبانی‌هایی که در آن‌ها این فضا بین مستأجران به اشتراک گذاشته می‌شود محتاط باشید.

افزونه‌هایی که ارزش اجرا دارند — و مواردی که پلتفرم جایگزین آن‌ها می‌شود

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

آنچه اجرای آن واقعاً ارزش دارد، مجموعه کوچکی است که قابلیت‌های واقعی می‌افزاید: افزونه‌هایی که وب‌سایت شما برای عملکرد خود واقعاً به آن‌ها نیاز دارد، و — در پلتفرم ما — دو افزونه در سطح مخزن رسمی که ما برای هر وب‌سایت می‌سازیم و ارائه می‌دهیم. افزونه کش ما، WordPress را به کش سرور متصل می‌کند و پاک‌سازی هوشمند را انجام می‌دهد تا هر ویرایش فقط صفحاتی را پاک کند که باید پاک شوند. افزونه ردپا (footprint) ما نشانه‌هایی را که یک نصب پیش‌فرض WordPress منتشر می‌کند — برچسب نسخه و سازنده، اندپوینت‌های شناسایی، XML-RPC، پینگ‌بک‌ها و هدر powered-by — در هر استقرار حذف می‌کند، تا به‌روزرسانی یک افزونه یا پوسته نتواند بی‌صدا آن‌ها را بازگرداند. هر دو افزونه مطابق با استانداردهای فهرست افزونه‌های WordPress.org ساخته شده‌اند، رایگان هستند و به‌طور خودکار به‌روزرسانی می‌شوند.

ایمن و به‌روز نگه داشتن WordPress

بیشتر نفوذها به WordPress هوشمندانه نیستند؛ بلکه قدیمی هستند. استفاده از هسته، پوسته یا افزونه قدیمی با یک آسیب‌پذیری شناخته‌شده و منتشرشده، شایع‌ترین دلیل آسیب دیدن وب‌سایت‌ها است، که این امر به‌روز ماندن را به باارزش‌ترین اقدام امنیتی موجود تبدیل می‌کند — و البته خسته‌کننده‌ترین، به همین دلیل است که نادیده گرفته می‌شود. میزبانی مدیریت‌شده باید این بار را از دوش شما بردارد: با اعمال وصله‌ها روی ساختار نرم‌افزاری زیربنایی WordPress، و ایمن‌سازی فرآیند به‌روزرسانی هسته و افزونه‌ها از طریق ارائه یک نسخه آزمایشی برای آزمایش آن‌ها و یک نسخه پشتیبان جهت بازگردانی در صورت لزوم.

علاوه بر به‌روز بودن، انتظار داشته باشید که مرزها برای شما اعمال شوند: اسکن بدافزار به‌طور پیش‌فرض روشن باشد تا آلودگی به‌جای کشف شدن توسط یک بازدیدکننده مهار شود، جداسازی به گونه‌ای باشد که یک سایت نفوذیافته نتواند به سایت دیگری دسترسی پیدا کند، حفاظت در برابر DDoS در لبه شبکه، و TLS در همه جا همراه با تمدید خودکار گواهینامه‌ها. هیچ‌یک از این موارد جایگزین رعایت اصول پایه‌ای نمی‌شود — اطلاعات ورود قوی، حداقل سطح دسترسی، حذف افزونه‌هایی که دیگر استفاده نمی‌کنید — اما به این معنی است که زیرساخت، حلقه ضعیف زنجیره نیست. در فهرست بررسی شما، سؤال از هر میزبان ساده است: آیا امنیت یک استاندارد پیش‌فرض است، یا بسته‌ای که باید خریداری کنید؟

WooCommerce و صفحاتی که هرگز نباید کَش کنید

فروشگاه جایی است که ذخیره‌سازی تهاجمی در حافظه موقت (کش) بیشترین سود را به همراه دارد و در صورت ساده‌انگارانه بودن، بدترین آسیب را وارد می‌کند. صفحات کاتالوگ، محصول و دسته‌بندی پربازدیدترین و کش‌پذیرترین صفحاتی هستند که در اختیار دارید و ارائه آنها از حافظه موقت تمام‌صفحه (full-page cache) بهترین کاری است که می‌توانید برای سرعت فروشگاه انجام دهید. اما صفحات سبد خرید، تسویه‌حساب و حساب کاربری شخصی هستند و هرگز نباید از کش مشترک ارائه شوند — در صورت انجام این کار، خریدار سبد خرید شخص دیگری را مشاهده خواهد کرد که این هم نقص عملکرد فروشگاه و هم نقض حریم خصوصی است.

راه دستیابی به هر دو این است که صفحه را کش کنید و برای بخش‌های زنده روزنه‌هایی ایجاد نمایید. در حالی که بقیه صفحه از طریق کش ارائه می‌شود، Edge Side Includes بخش سبد خرید، مجموع سبد خرید کوچک و وضعیت حساب را به ازای هر درخواست نمایش می‌دهد، و صفحات cart، checkout، my-account و هر صفحه nonce یا session به طور پیش‌فرض مستثنی هستند. تازگی اطلاعات با پاکسازی خودکار هوشمندی مدیریت می‌شود که با تغییر یک محصول، قیمت یا سفارش فعال می‌شود، بنابراین قیمت قدیمی هرگز باقی نمی‌ماند. اگر از WooCommerce استفاده می‌کنید، این بخش از چک‌لیست است که باید کاملاً دقیق انجام شود: ویترین فروشگاهی سریع از طریق کش، سبد خرید زنده برای هر کاربر، و عدم ذخیره هیچ‌گونه اطلاعات شخصی در کش.

پرسش‌های متداول

آیا هنوز به یک افزونه کش مانند WP Rocket نیاز دارم؟

خیر. کش کامل صفحه در وب‌سرور توسط LSCache متعلق به LiteSpeed انجام می‌شود، افزونه کش اختصاصی ما WordPress را به آن متصل کرده و پاکسازی هوشمند را مدیریت می‌کند، و یک کش شیء Redis اختصاصی برای هر سایت در پشت آن قرار دارد. افزودن دومین افزونه کش کامل صفحه به طور معمول به جای کمک، با کش سطح سرور تداخل ایجاد می‌کند، بنابراین نه لازم است و نه توصیه می‌شود.

این پلتفرم کدام افزونه‌ها را غیرضروری می‌کند؟

افزونه‌های حافظه پنهان (caching)، افزونه‌های مجزای object-cache و افزونه‌های پشتیبان‌گیری در اینجا غیرضروری هستند، زیرا این وظایف در سطحی پایین‌تر از WordPress انجام می‌شوند — حافظه پنهان در سطح سرور، یک object cache مدیریت‌شده به ازای هر سایت و پشتیبان‌گیری‌های پلتفرم. حذف آن‌ها تداخل‌ها و سطح حمله را کاهش می‌دهد. آنچه ارزش اجرا را حفظ می‌کند، افزونه‌هایی است که سایت شما برای عملکرد خود واقعاً به آن‌ها نیاز دارد، به علاوه دو افزونه رایگان ما برای حافظه پنهان و footprint که به‌صورت پیش‌فرض نصب شده‌اند.

آیا ذخیره‌سازی در حافظه پنهان (کش) سبد خرید WooCommerce یا صفحات کاربران واردشده من را دچار مشکل می‌کند؟

خیر. صفحات Cart، checkout، my-account و هرگونه صفحات حاوی nonce یا نشست به‌طور پیش‌فرض از حافظه پنهان مستثنی هستند، و قابلیت Edge Side Includes بخش سبد خرید و مبالغ کل را در صفحاتی که در غیر این صورت در حافظه پنهان ذخیره می‌شدند، به‌روز نگه می‌دارد. خریداران همیشه سبد خرید اختصاصی خود و فرایند تسویه‌حساب فعال را مشاهده می‌کنند در حالی که ویترین فروشگاه همچنان از حافظه پنهان بارگیری می‌شود، و پاک‌سازی خودکار هوشمند با تغییر محصول، قیمت یا سفارش، صفحات تحت تأثیر را پاک می‌کند.

چگونه امنیت WordPress را بدون نیاز به مدیریت من حفظ می‌کنید؟

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

به مدت ۱۴ روز رایگان امتحان کنید

اولین سایت‌های خود را به مدت ۱۴ روز رایگان راه‌اندازی کنید — بدون نیاز به کارت. قصد انتقال یک سایت یا شبکه موجود را دارید؟ مهاجرت‌ها رایگان و بدون محدودیت هستند.

رایگان شروع کنید