مصطفی قلیزاده 11 ارسال شده در اردیبهشت 89 وجود این که جوملا! یکی از انعطاف *پذیرترین و قدرتمند*ترین سیستم*های مدیریت محتوای (cms) موجود در دنیا است، از لحاظ زمان اجرا و عملکرد (Performance) می*تواند شما را با دشواری*هایی روبه*رو کند. چند کار وجود دارد که شما می*توانید با انجام دادنِ آن سرعت سایت جوملایی خود را افزایش دهید. سطح عملکرد قابل قبول به وسیله هر بسته هاستینگ (hosting) می*تواند انجام شود تا زمانی که بهترین عملکرد می*تواند بر روی سرور اختصاصی( Lighttpd که بسیار سریع*تر از Apache است) دیده شود. برای برخی از مدیرها، ارتقاء به یک سرور اختصاصی ممکن است کار مناسب و به*صرفه*ای نباشد. بهینه*سازی قالب (template): ما بحث را با یکی از معمول*ترین و (زیا*ن*آورترین) مشکلاتی که من تا به حال در جوملا (یا هر سایت دیگری) که طراحی می شود، آغاز می*کنیم. هزاران هزار قالب که مشخصاً برای جوملا طراحی شد*ه*اند، وجود دارد و بیشتر آن*ها بسیار زیبا به نظر می*رسند ولی تعدادی از آن*ها خطاهای سختی در عملکرد دارند. مشکل این*جاست که قالب*هایی وجود دارند که بیش از 70 تصویر جدا در صفحه را نمایش می*دهند. هر تصویر یک درخواست جدید را به وجود می*آورد (که به بین 1/ 0تا 1 ثانیه به تأخیر لود وب سایت اضافه می*کند) که حتماً باید دانلود (Download) شوند. مشکل آن*جایی بدتر می*شود که تصاویر بهینـه*سازی شده نیستند. وب سایت های بزرگی در این رابطه وجود دارند که به شما کمک می*کند تشخیص بدهید چه بهینه سازی قالبی باید انجام بشود و اطمینان کسب کنید که بعد از تغییر و بهینه سازی می توانید از قالب سایت*تان بدونه نقص در عملکرد استفاده کنید. (TheWebsite Analyzer). بعضی اوقات، Gzip: رمز گذاری صفحات شما با Gzip در ٪90 موارد جواب می دهد... اگر پردازشگر سرور شما سریع*تر از پهنای باند سرور سایت شماست (با تأکید: ٪90 موارد)، فعال*سازی Gzip compression حقیقتاً سرعت سایت طراحی شده با جوملا را افزایش خواهد داد. Gzip کردن صفحات به یک CPU پرقدرت نیاز دارد. اگر سایت شما سریع بالا نمی*آید، Gzip را فعال کنید(مخصوصاً در سرورهای با سرعت بالا). احتمالاً اگر به نتیجه نرسیدید یا از هاست اخطار CPU دریافت کردید، Gzip را غیرفعال کنید چون این کار می*تواند به شما آسیب زند، اما اکثر اوقات این کار به شما کمک می کند. تنها راه فهمیدن، امتحان کردن آن است، یعنی همان آزمون خطا! تمامی کامپوننت*ها، کامپوننت*های خوبی نیستند (components): اگر به پوشه امکانات جوملا نگاهی بیندازید. کامپوننت هایی را پیدا خواهید کرد که تمام خواسته*های شما را برآورده می*کند (در بیشتر قسمت ها). مشکل این جا است که بعضی از این کامپوننت*ها (به غیر از کامپوننت های هسته) واقعاً بی تأثیر هستند ولی کندی سایت شما را ناگهان بیشتر می کند. اگر شما به دنبال یک راه آسان برای شناسایی کامپوننت*های کند هستید که ممکن است از آن*ها استفاده هم می*کنید، می خواهید، کامپوننت my page caching راا نصب کنید، اما caching را فعال نکنید(بگذارید تا صفحه را با زمان طولانی ضبط کند برای هرURL).بعد از یک هفته یا بیشتر، به سراغ فهرستی که تولید شده بروید وURL های کند را پیدا کنید.آن کامپوننت*ها به شما نشان خواهند داد که کدامشان از بقیه کندتر هستند. اگر می توانید آن*هایی که خیلی کند هستند را حذف کنید و از محصول دیگری استفاده کنید. کامپوننت های نمایش آمار شاید خوب به نظر برسند، اما...: آن*ها از SQL Queryهای فراوانی استفاده می*کنند تا کارشان را انجام دهند که خیلی هم ارزشمند نیستند! اگر شما آمار خوبی می*خواهید از تحلیل*گر Google برای شمارش بازدید کنندگان خود استفاده کنید و کامپوننت*های اضافی دوری کنید. آن*ها آمار و ارقام خوبی را به شما نمایش می*دهند اما همراه با خطایی بزرگ در عملکرد! تنها آمارگیرنده*ای که ارزش نگهداشتن دارد search queryها هستند (در config کامپوننت جستجو جوملا 1.5) اگر شما به وب*سرور دسترسی دارید، همچنین می*توانید آمار ورود به سایت را از طریق سرور غیرفعال کنید (این عمل بسیار موثر است و تنها راهی است که اگر سرور به*کندی بالا می*آید، به شما کمک کند.) پلاگین*ها (مامبوت) به*راستی بسیار قدرتمند هستند اما کند...: (mambots - plugins) نگاهی بیندازید و ببینید از چه پلاگین*هایی استفاده می*کنید. اگر از هیچ*کدام از آن*ها استفاده نمی*کنید، خود را از دست آنها رها کنید (تنها غیرفعال کردن آن*ها کافی نیست، بلکه آن*ها را حذف کنید). هر بار که شما صفحه ای را بالا می آورید، پلاگین*ها 20 تا 30 برابر بیشتر خوانده می*شوند. اگر کد ٪100 موثر و مورد احتیاج نیست، این تلف کردن انرژی است. به این معنا نیست که اگر شما از پلاگین استفاده می کنید، هنوز و همچنان باید آنها را نگه داشت. بعضی از پلاگین*ها هستند که به خاطر کند کردن سایت، شناخته شده هستند. یکی از آنها All Videos Plugin است. این یک راه حل عالی است اما برای تکمیل باید از مقدار فراوانی Query استفاده کنید. SEF، سرور دوستانه*ای (Server Friendly) نیست: یکی از بهترین کارهایی که شما می توانید برای سایت خود انجام دهید، این است که کاری کنید تا URLها بهتر و زیباتر به نظر برسند. هسته*ی جوملا 1.5 کار را به شکل قابل قبولی انجام می*دهد اما کامپوننت*های اضافی کارآمدی هستند که می توانند URLهای سایت شما را بسیار زیباتر کنند.تنها مشکلی که این کامپوننت*ها دارند عملکرد غیردوستانه آنها است (آنها از هزاران Query استفاده می کنند). من استفاده از OpenSEF را به بقیه ترجیح می دهم و همانطور که به نظر می آید می تواند ترکیبی از قدرت، انعطاف پذیری و عملکرد است. همیشه به یاد داشته باشید که استفاده از SEF URLs یک معاوضه است.یک URL ظاهر زیباتری به یک موتور جستجو می دهد که می تواند استفاده کنندگان را به هدفشان برساند، اما برای بالا آمدن سایت زمان بیشتری لازم است. پیش از فعال سازی SEF URLها به آن خوب فکر کنید. کاری که شما می*توانید انجام دهید، بهینه*سازی پایگاه داده است به صورت دوره*ای به وسیله حذف کردن URLهای نامعتبر و منتشرنشده از پایگاه داده OpenSEF است (یک گزینه در بخش مدیریت OpenSEF) تا حد امکان ذخیره*سازی (caching) را فعال کنید: اگر می توانید، ذخیره*سازی محتوای هسته*ی جوملا را فعال کنید، این کار به شما سرعت بیشتری می*دهد وقتی شما در حال نظاره محتوا و ماژول*ها هستید (لازم نیست هر زمان که صفحه بالا می آید پلاگین*ها را پردازش کنید). اگر شما واقعاً می خواهید که سرعت را برای کاربران ثبت نشده افزایش دهید، نگاهی به کامپوننت ذخیره*سازی صفحه بیاندازید که می تواند کل صفحات را ذخیره سازد. احتمالاً این بهترین کاری است که شما می توانید برای پیدا کردن کاربران ثبت نشده، انجام دهید (بیشتر کاربران برای ٪95 از وب*سایت*ها).این به این معنا نیست که شما می*توانید بقیه این بهینه*سازی*ها را فراموش کنید و به خاطر این که کاربران ثبت شده همچنان همان سایت ذخیره*نشده را خواهند دید. یافتن Queryهای بد: از پیکربندی کلی جوملا، خطازدایی را فعال سازید.سپس به سایت نگاه کنید و مرتب بودن Queryهای پایگاه داده را بررسی کنید. شما می*خواهید این تعداد در کمترین حد خود باشند (کمتر از 30، ترجیحا، اما کمتر از 50 هم اکتفا می*کند). با نگاه کردن به Queryهای بازگشتی آغاز کنید (آنها را دوباره و دوباره مرتب کنید). شما باید قادر باشید تا بگویید که کدام امکان در حال تولید Query است، تنها با توجه به جدولی که به آن می*نگرید. (برای مثال *Select* از _job_openset_configمتعلق به OpenSEF است). دو راه برای مواجهه با Queryهای در حال اجرا وجود دارد. شما می*توانید آن امکان را غیرفعال کنید یا با گسترش*دهنده تماس بگیرد تا آن امکان را بهینه*سازی کند (چه گسترش*دهنده خود امکان یا یک گسترش*دهنده قراردادی مانند من). از پل*های ارتباطی جوملا با سایر برنامه ها (پرتال ها) دوری کنید (joomla bridge): یکی از محبوب*ترین متدها برای اضافه کردن توابع جدید به جوملااز طریق یک پل ارتباطی است.این کار شامل تغییراتی سطحی هسته جوملا و یا نرم افزارهای دیگر هم می شود (مانند SMF و یا Gallery2) برای فراهم ساختن تابع**ای از هردوی آن*ها. از لحاظ ظاهری، زیبا به نظر می*رسد زیرا نرم افزارهای دیگر بسیار تصفیه شده*تر و دارای تابع*های بیشتری نسبت به امکانات قابل دسترسی جوملاهستند اما درزیر یک داستان متفاوت دارد.مشکل این جاست که آنها دو سیستم جدا و مستقل از یکدیگر هستند. این به این معنا است که هر کدام باید هسته خود را بارگذاری (شامل frameworks، مدیریت کاربران و غیره). این یک خطای بزرگ است زیرا شما برای صفحه، عملاً دو صفحه را بارگذاری می*کنید. برای عملکرد با ارزش*تر،از دست دادن توابع بسیار کوچک در رفتن از SMF به سوی چیزی چون fireboard بسیار خوب است. بهینه*سازی پایگاه داده (database): یکی از چیزهایی که نصب جوملا را تحت فشار قرار می دهد سرور پایگاه داده است. دو راه اصلی وجود دارد که پایگاه داده را بهینه*سازی کنید. بهینه*سازی جدول*ها و بهینه*سازی شِما (Schema). فرق آن*ها این است که جدول*ها نشان دهنده چگونگی ذخیره کردن جدول*ها در داده است و شِما نشان دهنده این که آن*ها چطور باید ذخیره شوند.شِما فقط باید یک بار بهینه*سازی شود در حالی که جدول*ها باید مرتبا ًبهینه*سازی شوند (تا وقتی که داده اضافه شود، تنظیم شود و حذف شود).برای بهینه*سازی جدول*ها به phpmyAdmin بروید، همه جدول*ها را انتخاب کنید و بر روی بهینه*سازی کلیک کنید. در پایان نسخه پشتیبان تهیه کنید و سرور را مشاهده کنید (backup): شما باید مرتباً از سایت خود نسخه پشتیبان بگیرید و آن*ها را از پروسه تولید سرور بیرون بکشید. شما ممکن است به این فکر بییفتید «این چه ارتباطی با عملکرد شما دارد؟»، این به تمام عملکرد ارتباط دارد. بدون پشتیبان رایج، اگر نصب، به روز رسانی یا tweak به درستی انجام نگرفت، شما چگونه می*خواهید سایت خود را ذخیره نمایید؟ یک کاهش سرعت ناگهانی می تواند شرایط برای ه-ک شدن که باعث تزریق شدن رمزهای خرابکار (SQL injection) به هسته می شود را فراهم سازد (متا ُسفانه امکان دارد).چه اتفاقی خواهد افتاد اگر سرور تصمیم به زدن گلوله کند؟ بهترین راه برای تهیه نسخه پشتیبان با یک automated script می باشد(تا شما نتوانید فراموش کنید).نمونه های خوبی از آن در کل اینترنت وجود دارد.(این می تواند شامل control panel شما هم شود اگر یکی از آنها دارید). به یاد داشته باشید قبل از انجام هر کاری در سایت خود، نخست از آن یک نسخه پشتیبان تهیه کنید. نقل قول به اشتراک گذاری این ارسال لینک به ارسال به اشتراک گذاری در سایت های دیگر