از طریق منوی جستجو مطلب مورد نظر خود در وبلاگ را به سرعت پیدا کنید
سایت های پویا با سرعت ثابت: هنر ذخیره سازی وب سایت
سرفصلهای مطلب
سایت های پویا با سرعت ثابت: هنر ذخیره سازی وب سایت
اخیراً در مورد مزایای سایت های استاتیک مطالب زیادی گفته شده است. اما در بسیاری از موقعیت ها یک رویکرد پویا یک ضرورت است. چه یک سیستم مدیریت محتوا، یک ابزار ارتباط با مشتری یا یک فروشگاه آنلاین، آنها به کاربران نهایی اجازه می دهند تا سایت های پیچیده را به سرعت و به طور مداوم حفظ کنند. و وقتی به درستی کنار هم قرار گیرند، می توانند برای سرعت با سایت های استاتیک رقابت کنند. (pullquote)هر برنامهای که نیاز به خواندن و نوشتن مکرر دادهها داشته باشد باعث تأخیر قابل توجهی میشود (/pullquote) از هر سیستمی که استفاده میکنید، سایتهای پویا معمولاً از عناصر مشابه تشکیل شدهاند. اینها فرمی از وب سرور، پشتیبان و یک برنامه کاربردی هستند که به یک یا چند زبان برنامه نویسی نوشته شده اند. این ترکیب از مؤلفهها انعطافپذیری زیادی میدهد، اما هرکدام سربار خود را به همراه دارند و زمان بارگذاری را افزایش میدهند، چیزی که همه وبسایتهای مدرن میخواهند از آن اجتناب کنند. این امر به ویژه در مورد دسترسی به پایگاه داده صادق است؛ هر برنامه ای که نیاز به خواندن و نوشتن مکرر داده ها داشته باشد باعث تاخیر قابل توجهی می شود. این جایی است که کش و یک استراتژی ذخیره سازی مناسب برای مورد استفاده شما کمک خواهد کرد. هدف اصلی ذخیره سازی، جلوگیری از تماس های مکرر غیر ضروری بین لایه های پایگاه داده برنامه و در عوض استفاده از صفحات HTML ایستا از پیش تولید شده است که در مرورگر سریعتر ارائه می شوند.
ذخیره مرورگر
اولین کشی که هر کاربر وب متوجه آن می شود، حافظه نهان در مرورگر خود است. چند بار توسعهدهندگان از شما خواستهاند که برای مشاهده تغییرات، یک «فروز تازهسازی» انجام دهید؟ حافظه پنهان مرورگر ساده است اما نقطه شروع خوبی برای شروع توضیح مفاهیم کش است. یک مرورگر نمایش هایی از صفحات وب بازدید شده را ذخیره می کند روی رایانه کاربر، معمولاً در صورت شناسایی یا اجبار تغییرات توسط سایت، آنها را یک بار در هر جلسه به روز می کند.
کش پروکسی
یکی از ابزارهای رایجی که توسط صاحبان و مدیران سایت استفاده می شود، یک “کش پروکسی معکوس” است که بین page درخواست های ارائه شده توسط یک مرورگر وب و برنامه وب. درخواستها را رهگیری میکند و کپیهایی از صفحات را مستقیماً از حافظه پنهان ارائه میکند، بنابراین سرعت قابل توجهی را افزایش میدهد. چندین گزینه اصلی کش پروکسی برای نصب خود یا به عنوان «نرم افزار به عنوان سرویس» در دسترس است. (ما ارائه دهندگان میزبانی ابری را نادیده می گیریم که معمولاً همه چیزهایی را که ممکن است نیاز داشته باشید را در یک پشته وب مستقل بسته بندی می کنند.) گزینه های محبوب کش پروکسی عبارتند از:
گزینههای SaaS برای کش معمولاً در دنیای شبکههای تحویل محتوا (CDN) قرار دارند که به جای قرار دادن حافظه پنهان بین کاربر و پشته وب، مجموعههایی از محتوای کش شده را به کاربران ارائه میدهند که از نظر جغرافیایی به آنها نزدیکترین هستند. این یک تفاوت ظریف است، اما برای سایت های بزرگ با مخاطبان جهانی می تواند تفاوت قابل توجهی ایجاد کند.
استفاده از وارنیش
لاک زدن در تمام مدیران بسته لینوکس موجود است، به عنوان یک تصویر داکر و بسیاری از گزینه های دیگر، بخوانید نصب پروژه page برای جزئیات بیشتر
پیکربندی پایه وارنیش
Varnish یک فایل پیکربندی پیش فرض را در هر یک از این آدرس ها ذخیره می کند /usr/local/etc/varnish/default.vcl یا /etc/varnish/default.vcl، نوشته شده در VCL (زبان پیکربندی وارنیش). این فایل پیکربندی از طریق یک مفسر C در یک برنامه کوچک کامپایل می شود تا سرعت را حتی بیشتر افزایش دهد. بسته به روش نصب Varnish، فایل پیکربندی چیزی شبیه به این خواهد بود:
backend default { .host = "127.0.0.1"; .port = "8000"; }
در سادهترین حالت، این باطن پیشفرض مورد استفاده توسط Varnish را تعریف میکند host و پورت کنید که باید محتوا را گوش کند و رهگیری کند روی.
نظرسنجی باطنی
یکی از ویژگی های مفید Varnish این است که در فواصل زمانی از پیش تعریف شده بررسی کنید که آیا یک Backend هنوز سالم است یا خیر. این “Backend Polling” نامیده می شود و با افزودن یک بخش probe به اعلان باطن پیکربندی می شود:
.probe = { .url="https://www.webdesignerdepot.com/"; .timeout = 34ms; .interval = 1s; .window = 10; .threshold = 8; }
موارد بالا تنظیمات پیش فرض ارائه شده توسط Varnish هستند و به آن می گویند که از یک مورد خاص بازدید کند .url هر .فاصله و اینکه اگر برای حداقل .آستانه بیرون از .پنجره کاوشگر، url در داخل پاسخ می دهد .تایم اوت میلی ثانیه، باطن هنوز سالم در نظر گرفته می شود. زمانی که «ناسالم» در نظر گرفته شود، محتوا برای یک دوره از پیش تعریف شده از حافظه پنهان ارائه می شود.
شروع وارنیش
ما تغییرات خاصی را در پیکربندی Varnish در هر گزینه پلتفرم پوشش خواهیم داد، در حال حاضر اجازه دهید نگاهی به گزینه های کلی بیندازیم.
پورت ها
در ابتدا پورت وب سرور شما باید از حالت پیش فرض تغییر کند. به عنوان مثال در پیکربندی Apache Vhost پورت را به 81 یا 8080 تغییر دهید. شبح Varnish را با دستور varnish یا با استفاده از یک سرویس پوشه راه اندازی کنید. دیمون دارای گزینه های پرچم است که رایج ترین و مفیدترین آنها عبارتند از:
- -f: مسیر فایل پیکربندی را تنظیم می کند.
- -s: گزینه های ذخیره سازی کش. تنظیم این مورد روی RAM باعث افزایش سرعت حتی بیشتر می شود.
بررسی همه کار می کند
را اجرا کنید varnishstat فرمان یا بازدید isvarnishworking.com برای بررسی اینکه سرور Varnish شما آماده است و به درخواست ها گوش می دهد.
چه چیزی را در حافظه پنهان نکنید
بخشهای خاصی از سایت وجود دارد که نمیخواهیم آنها را در حافظه پنهان نگه داریم، برای مثال صفحات مدیریت. ما می توانیم آنها را با ایجاد یک حذف کنیم vcl_recv زیر برنامه در default.vcl فایل حاوی یک اگر عبارتی که تعریف می کند چه چیزی را در حافظه پنهان نکنید:
sub vcl_recv { # URI of admin folder if (req.url ~ "^/url/") { return (pass); } return(lookup); }
اگر از Varnish 4 استفاده می کنید، همه چیز کمی متفاوت است، از جمله مقادیر بازگشتی. را vcl_recv تابع اکنون برمی گردد آهاش ارزش به جای جستجو
sub vcl_recv { ... return(hash); }
همچنین اینجاست که ما سایتها یا زیر دامنههایی را تنظیم میکنیم که Varnish باید با افزودن a نادیده بگیرد req.http.host ~ ‘example.com’ به اگر بیانیه.
بیسکویت ها
بهطور پیشفرض Varnish محتوای پشتیبانی که کوکیها را تنظیم میکند، ذخیره نمیکند. به طور مشابه، اگر مشتری یک کوکی ارسال کند، Varnish را مستقیماً به باطن دور میزند. کوکیها اغلب توسط سایتها برای پیگیری فعالیت کاربر و ذخیره مقادیر خاص کاربر استفاده میشوند. عموماً این کوکیها فقط برای کدهای سمت کلاینت مورد توجه هستند و هیچ علاقهای به Backend یا Varnish ندارند. میتوانیم به Varnish بگوییم که کوکیها را نادیده بگیرد، به جز در مناطق خاصی از سایت:
if ( !( req.url ~ ^/admin/) ) { unset req.http.Cookie; }
این اگر بیانیه کوکی ها را نادیده می گیرد مگر اینکه در قسمت مدیریت سایت باشیم، جایی که عبور کوکی ممکن است مفیدتر باشد (مگر اینکه واقعاً بخواهید مدیران سایت را ناامید کنید).
استثناهای دیگر
با نصب پیشفرض، Varnish صفحات محافظتشده با رمز عبور، درخواستهای GET و HEAD را نیز ذخیره نمیکند.
استفاده از وارنیش
اکنون دو مورد استفاده عالی برای وارنیش را بررسی خواهیم کرد: دروپال و مجنتو. هر دو سیستم بسیار پویا هستند که به کاربران غیر فنی اجازه می دهند تا طیف گسترده ای از وظایف پیچیده را انجام دهند. این می تواند منجر به پرس و جو در پایگاه داده شود page بارگذاری و سایت های شلوغ به طور قابل توجهی کند خواهند شد. صفحات معمولی ساخته شده با این سیستم ها دارای ترکیبی از محتوا هستند که به ندرت و مکرر به روز می شوند.
دروپال
دروپال دارای گزینههای ذخیرهسازی پیشفرض است که عملکردهای مشابه Varnish را انجام میدهند، اما انعطافپذیری یا افزایش سرعت مورد نیاز سایتهای بزرگتر یا پیچیدهتر را فراهم نمیکنند. در روش دروپال واقعی یک وجود دارد ماژول برای مدیریت ادغام وارنیش برای ذخیره برخی از تنظیمات دستی ذکر شده در بالا. ماژول را نصب کنید و مطمئن شوید که دستورالعمل های نصب موجود در ماژول را دنبال می کنید من را بخوانید فایل. مطمئن شوید که /etc/default/varnish فایل دارای گزینه های شبح زیر است (و تورفتگی مهم است):
DAEMON_OPTS="-a :80 -T localhost:6082 -f /etc/varnish/default.vcl -S /etc/varnish/secret -s file,/var/lib/varnish/$INSTANCE/varnish_storage.bin,128M"
اطمینان حاصل کنید که آپاچی و هر میزبان مجازی مرتبطی در حال گوش دادن هستند روی پورت 8080، نه 80. پس از انجام این تغییرات، هر دو سرویس را مجددا راه اندازی کنید. ممکن است لازم باشد “کلید کنترل لاک” را در پیکربندی ماژول تنظیم کنید page. پیدا کنید که آن کلید با چیست cat /etc/varnish/secret دستور دهید و آن را در تنظیمات قرار دهید page. نسخه صحیح Varnish را انتخاب کنید، تنظیمات را ذخیره کنید و باید یک سری تیک سبز رنگ در پایین صفحه مشاهده کنید page. ماژول Varnish با تنظیمات پیشفرض کش دروپال تعامل دارد، بنابراین مطمئن شوید که آن را برای موارد استفاده خود فعال و پیکربندی کردهاید. اجرا کن varnishstat از خط فرمان، به عنوان یک کاربر ناشناس شروع به پیمایش در سایت کنید و باید شاهد تغییر آمار در خروجی فرمان باشید. یکی از مسیرهایی که نمیخواهیم در دروپال کش کنیم، صفحات مدیریت هستند، میتوانیم این کار را با vcl_recv روال فرعی:
sub vcl_recv { # URI of admin folder if (req.url ~ "^/admin/") { return (pass); } unset req.http.Cookie; return(lookup); }
ممکن است بخواهید صفحات کاربر، صفحات به روز رسانی سیستم و سایر صفحات تولید شده توسط ماژول های بسیار پویا مانند پرچم که از ajax به طور گسترده برای عملکرد استفاده می کنند، ذخیره نکنید (ورود به سیستم). این کار را با اضافه کردن موارد دیگر انجام دهید req.url پارامترهای به اگر بیانیه.
مجنتو
نصب پیشفرض Magento با یک سیستم کش داخلی ارسال میشود که نسخههای ثابت عناصر سایت را در یک پوشه مشخص ذخیره میکند. را سیستم -> مدیریت حافظه پنهان page یک نمای کلی از وضعیت کش فعلی ارائه می دهد و همچنین به شما امکان می دهد تمام یا تکی حافظه پنهان اجزا را پاک کنید. شما می توانید فایل های CSS و JS انباشته شده و فایل های تصویری تولید شده خودکار را از این قسمت پاک کنید page. نسخه بعدی مجنتو به طور پیشفرض از کش کردن Varnish پشتیبانی میکند، اما در حال حاضر باید از افزونههای شخص ثالث استفاده کنیم، من توصیه میکنم ماژول سقز. حتما بخونید فایل readme پروژه همانطور که برخی از مراحل پیکربندی اضافی را یادداشت می کند، نادیده گرفتن آنها ممکن است سایت شما را خراب کند. ماژول Turpentine بسیار قابل تنظیم است و تغییرات لازم را در آن ایجاد می کند vcl فایل ها و پیکربندی Varnish برای شما. برخی از گزینه های کلیدی برای تنظیم عبارتند از:
- میزبان پشتیبان: وارنیش host، پیش فرض به 127.0.0.1
- بندر باطن: پورت وارنیش در حال اجراست روی، پیش فرض به 80
- URL لیست سیاه: لیستی از URLهایی که هرگز نسبت به Magento در حافظه پنهان قرار نمی گیرند root. آدرس های مدیریت و API به طور خودکار گنجانده می شوند.
ماژول Turpentine به کش پیش فرض Magento متصل می شود، بنابراین کش ها را پاک می کند روی حافظه پنهان Varnish page حافظه پنهان Varnish مربوطه را پاک می کند.
نکات کلی
جدای از استفاده از Varnish با هر یک از سیستم های پویا بالا، در اینجا چند نکته متفرقه دیگر وجود دارد که به قابلیت حافظه پنهان هر سایت کمک می کند.
URL های ثابت
اگر محتوای یکسانی را در زمینههای مختلف ارائه میدهید، باید از همان URL استفاده کند. به عنوان مثال استفاده از را مخلوط نکنید article.html، article.htm و مقاله، اگرچه ممکن است CMS شما اجازه دهد. این منجر به سه نسخه ذخیره شده مختلف از یک محتوا می شود.
از کوکی ها کم استفاده کنید
همانطور که در بالا دیدیم، کوکی ها به سختی ذخیره می شوند و به ندرت آنقدر که ما فکر می کنیم ضروری هستند. سعی کنید استفاده و تعداد آنها را به صفحات پویا محدود کنید.
رسیدگی به پرونده
بارگذاری دارایی های سایت می تواند یکی از زمان برترین بخش های یک سایت باشد page رندر و نکات ساده ای برای کاهش این بار وجود دارد: استفاده از CSS Image sprites برای نماد نگاری به جای چندین فایل کوچک منجر به ترافیک شبکه کمتری می شود. میزبانی کتابخانه های CSS و جاوا اسکریپت به صورت محلی به معنای ترافیک شبکه کمتر و کنترل بیشتر بر استراتژی های کش است. این می تواند به معنای افزایش سربار تعمیر و نگهداری برای به روز نگه داشتن این دارایی ها باشد. این داراییها را در پوشههایی با نام ثابت ذخیره کنید تا ارجاعات به آنها نیز ثابت باشند.
سریع به جلو
امیدوارم این مقدمه برای افزایش سرعت سایت های پویا با کش مفید بوده باشد. افزایش عملکرد ارزش یک دوره اولیه پیکربندی، آزمایش و بهینه سازی را دارد. در این دوره از توجه کوتاه و بی حوصلگی، هر افزایش سرعتی که می توانید از تنظیمات خود حذف کنید، تفاوت را برای کاربران و رقبا ایجاد می کند.
تصویر شاخص، تصویر کش شبکه از طریق Shutterstock.
(برچسبها به ترجمهhost
منتشر شده در 1403-01-12 13:46:02
منبع نوشتار