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

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

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

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

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

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

کش در سرور، نه فقط در افزونه

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

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

کش حافظه و پایگاه داده

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

واژه کلیدی در اینجا «به ازای هر سایت» است. یک کش شیء اشتراکی به این معناست که یک سایت پرمشغله یا دارای کدنویسی ضعیف می‌تواند داده‌های کش‌شده‌ی بقیه را پاک کند و پایگاه داده را برای سایت‌های همسایه دچار کمبود منابع سازد؛ یک کش اختصاصی به ازای هر سایت، همراه با محدودیت‌های پایگاه داده به ازای هر سایت، آن شعاع تخریب را محدود نگه می‌دارد. در چک‌لیست خود، یک کش شیء ماندگار را برای هر سایتی که دارای کاربران وارد شده به سیستم یا فروشگاه است، غیرقابل اغماض بدانید و نسبت به هاستینگی که در آن این کش بین چند تننت به اشتراک گذاشته می‌شود، محتاط باشید.

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

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

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

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

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

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

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

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

راه داشتن هر دو، ذخیره صفحه در کش (کش کردن) و ایجاد سوراخ‌هایی برای بخش‌های زنده است. انکلودهای سمت لبه (Edge Side Includes)، قطعه سبد خرید، مجموع سبد خرید کوچک و وضعیت حساب را به ازای هر درخواست رندر می‌کنند، در حالی که بقیه صفحه از کش سرویس‌دهی می‌شود و سبد خرید، تسویه حساب، حساب کاربری من و هر صفحه نانس یا نشستی به‌طور پیش‌فرض مستثنی می‌شوند. به‌روز بودن توسط پاک‌سازی خودکار و هوشمندی مدیریت می‌شود که با تغییر یک محصول، قیمت یا سفارش فعال می‌شود، بنابراین هیچ قیمت قدیمی‌ای باقی نمی‌ماند. اگر WooCommerce را اجرا می‌کنید، این همان بخشی از چک‌لیست است که باید کاملاً درست انجام شود: فروشگاه سریع از کش، سبد خرید زنده به ازای هر کاربر، و عدم کش شدن هیچ‌چیز شخصی.

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

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

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

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

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

آیا کش کردن، سبد خرید WooCommerce یا صفحات کاربر واردشده را دچار مشکل می‌کند؟

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

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

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

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

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

شروع رایگان