گھر سافٹ ویئر وارنش: کم کرنے کے لئے تیار!

وارنش: کم کرنے کے لئے تیار!

فہرست کا خانہ:

Anonim

جب بات ویب سائٹ پرفارمنس کی ہو تو ، وارنش ایک گرم ٹیکنالوجی ہے۔ ایک آسان تنصیب اور ترتیب کے ساتھ ، یہ ممکن ہے کہ کسی بھی ویب سائٹ کی کارکردگی کو فروغ دیا جاسکے اور صرف چھوٹے ورچوئل پرائیویٹ سرور کے ساتھ دس لاکھ صفحات کی خدمت ہوسکے۔ ، میں آپ کو چار ممکنہ کنفیگریاں دکھاتا ہوں جو آپ کی سائٹ کے جوابی وقت کو بہتر بنانے میں مددگار ثابت ہوں گے ، چاہے آپ سیکڑوں ، ہزاروں یا لاکھوں صفحات کی خدمت کریں۔

وارنش کا تعارف

وارنش-کیشے ویب سائٹ کے مواد کو کیچ کرنے کا مقصد کے ساتھ ایک ویب ایکسلریٹر ہے۔ یہ ایک اوپن سورس پروجیکٹ ہے جس کا مقصد بغیر کوڈ کو تبدیل کیے - بغیر کسی ناگوار طریقے سے ویب سائٹ تک رسائی کو بہتر بنانا ہے اور آپ کو اپنی ویب سائٹ میں ہاتھ ڈالنے کی اجازت دیتا ہے۔


یہ ورنیش کیشے کے تخلیق کار تھے جنہوں نے اسے ویب ایکسلریٹر کہا ، کیوں کہ اس کا بنیادی مقصد کسی ویب سائٹ کے سامنے والے حصے کو بہتر بنانا اور تیز کرنا ہے۔ وارنش ویب سرور کے ذریعہ پیش کردہ صفحات کی کاپیاں اپنے کیشے میں محفوظ کرکے حاصل کرتی ہے۔ اگلی بار جب اسی صفحے پر درخواست کی جائے گی تو ، ورنیش ویب سرور سے صفحہ کی درخواست کرنے کے بجائے اس کی کاپی پیش کرے گا ، جس کے نتیجے میں زبردست کارکردگی میں اضافہ ہوگا۔


وارنش کیشے کی ایک اور اہم خصوصیت ، اس کی کارکردگی کے علاوہ ، اس کی ترتیب زبان ، وی سی ایل کی لچک بھی ہے۔ وی سی ایل اس پر پالیسیاں لکھنا ممکن بناتا ہے کہ آنے والی درخواستوں کو کس طرح سنبھالا جانا چاہئے۔ ایسی پالیسی میں ، آپ فیصلہ کرسکتے ہیں کہ آپ کون سا مواد پیش کرنا چاہتے ہیں ، جہاں سے آپ مواد حاصل کرنا چاہتے ہیں اور درخواست یا جواب کو کس طرح تبدیل کرنا چاہئے۔


ترتیب سازی کی مندرجہ ذیل مثالوں میں ، میں آپ کو دکھاتا ہوں کہ VCL کو کچھ اہداف کے حصول کے لئے کس طرح استعمال کرنا ہے ، تصویروں اور جامد چیزوں کی ایک آسان کیچنگ سے ، تقسیم شدہ ماحول میں وارنش کا استعمال کرنے یا اس میں بوجھ کے متوازن کے طور پر کام کرنے کے لئے۔


مندرجہ ذیل تمام مثالیں وارنش 3.x کے لئے ہیں۔ براہ کرم نوٹ کریں کہ وارنش 2.x مختلف ترکیب اور قواعد استعمال کرتا ہے ، لہذا یہ مثالیں اس ورژن کے ساتھ مطابقت نہیں رکھتی ہیں۔


ذیل میں وارنش کی اہم ریاستیں ہیں ، جنہیں ہم وی سی ایل کنفیگریشن فائل میں استعمال کریں گے۔


recv

یہ پہلا فنکشن ہے جو درخواست موصول ہونے پر کہا جاتا ہے۔ یہاں ہم یہ چیک کرنے سے پہلے درخواست میں ہیرا پھیری کرسکتے ہیں کہ آیا یہ کیشے میں موجود ہے یا نہیں۔ اگر درخواست کو کیشے میں نہیں رکھا جاسکتا ہے تو ، بیک فائنڈ سرور جس پر درخواست بھیجی جائے گی اس کا انتخاب بھی اس مرحلے میں کیا جاسکتا ہے۔


پاس

ہم اس فنکشن کا استعمال اس وقت کر سکتے ہیں جب ہم ویب سرور کو درخواست بھیجنا چاہتے ہیں اور جواب کو کیچ کروانا چاہتے ہیں۔


پائپ

یہ فنکشن وارنش کو نظرانداز کرتا ہے اور ویب سرور کو درخواست بھیجتا ہے۔


اوپر دیکھو

دیکھنے کے ساتھ ، وارنش یہ تصدیق کرنے کے لئے کہتا ہے کہ آیا کیشے میں جواب موجود ہے اور درست ہے؟


بازیافت

اس فنکشن کو پچھلے سرے سے مواد کی بازیابی کے بعد کہا جاتا ہے جب پاس یا مس کے ذریعہ درخواست دی جاتی ہے۔

بنیادی باتیں: کیشے امیجز

تو آئیے ترتیب کی مثال دیکھیں۔ اس پہلی مثال میں ، ہم صرف تصاویر اور جامد فائلوں جیسے سی ایس ایس فائلوں کو کیش کریں گے۔ یہ کنفیگریشن واقعی مفید ہے جب آپ اپنی ویب سائٹ کو نہیں جانتے جس کو آپ فروغ دینا چاہتے ہیں ، لہذا آپ صرف یہ فیصلہ کرسکتے ہیں کہ تمام تصاویر ، سی ایس ایس اور جاوا اسکرپٹ تمام صارفین کے لئے یکساں ہیں۔ صارفین کو ممتاز کرنے کے لئے ، HTTP پروٹوکول کوکیز کا استعمال کرتا ہے ، لہذا ہمیں ان کو اس طرح کی درخواست میں ختم کرنا ہوگا لہذا یہ سب ورنیش کے لئے ایک جیسے ہیں:

sub vcl_recv{


if(req.url ~ " * \.(png|gif|jpg|swf|css|js)"{

unset req.http.cookie;


unset req.http.Vary;

return(lookup);

}


# strip the cookie before the image is inserted into cache.

sub vcl_fetch {

if (req.url ~ "\.(png|gif|jpg|swf|css|js)$") {

unset beresp.http.set-cookie;

}

اور یہ بات ہے. اس وی سی ایل فائل کی مدد سے آپ جامد مواد کو آسانی سے کیش کرسکتے ہیں۔

معیاری: کیشے کی تصاویر اور صفحات

عام طور پر ، آپ صرف اپنی ویب سائٹ کے جامد مواد کو کیش نہیں کرنا چاہتے ہیں بلکہ آپ کچھ متحرک صفحات کو بھی اپنے پاس رکھنا چاہتے ہیں جو آپ کے ویب سرور نے تیار کیا ہے ، لیکن یہ تمام صارفین کے لئے یکساں ہے - یا کم از کم آپ کے تمام گمناموں کے لئے صارفین۔ اس مرحلے میں ، آپ کو یہ جاننا ہوگا کہ کون سے صفحات کو محفوظ کیا جاسکتا ہے اور کون سا نہیں۔


اس کی ایک عمدہ مثال ورڈپریس ہے جو عام طور پر استعمال کردہ مواد کے انتظام کے نظام میں سے ایک ہے۔ ورڈپریس ویب سائٹ کے صفحات کو پی ایچ پی اور ایک ایس کیو ایل ڈیٹا بیس کے سوالات کے ساتھ متحرک طور پر تیار کرتی ہے۔ یہ اچھا ہے کیونکہ آپ آسانی سے اپنی انتظامیہ کے انٹرفیس سے کچھ کلکس کے ساتھ اپنی ویب سائٹ کو اپ ڈیٹ کرسکتے ہیں ، لیکن استعمال شدہ وسائل کے لحاظ سے یہ بھی مہنگا ہے۔ جب بھی صارف ہوم پیج پر آتا ہے تو ہر بار وہی پی ایچ پی اسکرپٹ اور ایس کیو ایل استفسار کیوں چلائیں؟ ہم زیادہ سے زیادہ ملاحظہ شدہ صفحات کو کیش کرنے اور ناقابل یقین نتائج حاصل کرنے کے لئے وارنش کا استعمال کرسکتے ہیں۔


یہ کچھ اصول ہیں جو ورڈپریس تنصیب میں کارآمد ثابت ہوسکتے ہیں۔

sub vcl_recv{

# Let's make sure we aren't compressing already compressed formats.

if (req.http.Accept-Encoding) {

if (req.url ~ "\.(jpg|png|gif|gz|tgz|bz2|mp3|mp4|m4v)(\?. * |)$") {

remove req.http.Accept-Encoding;

} elsif (req.http.Accept-Encoding ~ "gzip") {

set req.http.Accept-Encoding = "gzip";

} elsif (req.http.Accept-Encoding ~ "deflate") {

set req.http.Accept-Encoding = "deflate";

} else {

remove req.http.Accept-Encoding;

}

}


if (req.url ~ "^/$") {

unset req.http.cookie;

}


# Unset all cookies if not Wordpress admin - otherwise login will fail


if (!(req.url ~ "wp-(login| admin )")) {

unset req.http.cookie;

return(lookup);

}


# If you request the special pages go directly to them


if (req.url ~ "wp-(login| admin )") {

return (pipe);

}


}


sub vcl_miss {

if (!(req.url ~ "wp-(login| admin )")) {

unset req.http.cookie;

}

if (req.url ~ "^/+.(jpeg|jpg|png|gif|ico|js|css|txt|gz|zip|lzma|bz2|tgz|tbz|html|htm)(\?.|)$") {

unset req.http.cookie;

set req.url = regsub(req.url, "\?.$", "");

}

if (req.url ~ "^/$") {

unset req.http.cookie;

}

}

sub vcl_fetch {

if (req.url ~ "^/$") {

unset beresp.http.set-cookie;

}

# Unset all cookies if not Wordpress admin - otherwise login will fail

if (!(req.url ~ "wp-(login| admin )")) {

unset beresp.http.set-cookie;

}

}

آپ دیکھ سکتے ہیں کہ اس مثال میں ، ہم اپنی ویب سائٹ کے سارے صفحوں کو کیش کرتے ہیں ، لیکن یو آر ایل میں "ڈبلیو پی ایڈمن" یا "ڈبلیو پی پی لاگ ان" رکھنے والے افراد کے ل for لاگ ان ہونے کے لئے "خاص" مقامات استعمال ہوتے ہیں۔ ورڈپریس بطور ایڈمنسٹریٹر اس طرح ، ہم براہ راست ویب سرور سے بات کرنا چاہتے ہیں اور وارنش کیشے کو نظرانداز کرنا چاہتے ہیں۔


قدرتی طور پر ، اگر آپ ڈروپل ، جملہ یا کسٹم میڈ میڈ ویب سائٹ استعمال کرتے ہیں تو آپ کو ان اصولوں کو تبدیل کرنا ہوگا ، لیکن مقصد ہمیشہ ایک ہی ہوتا ہے: تمام متحرک صفحات اور کیشے بھیجنے کے ل To آپ اپنے پچھلے سرے پر پہنچ سکتے ہیں۔

معیاری ++: سرور لچک میں اضافہ کریں

کسی وقت ویب سرور سست ہوجاتے ہیں کیونکہ ان میں زیادہ بوجھ ہے۔ وارنش بھی اس میں مدد کرسکتی ہے۔ ہم وارنش کو بتانے کے لئے کچھ خاص ہدایتوں کا استعمال کرسکتے ہیں اگر نیچے کی طرف ہو یا بہت ہی آہستہ سے جواب دے رہا ہو تو وہ آخر سے بات کرنے سے گریز کریں۔ ان معاملات کے لئے وارنش "فضل" ہدایت کا استعمال کرتے ہیں۔


وارنش کے دائرہ کار میں فضل کا مطلب یہ ہے کہ جب حالات اس کی ضرورت پڑیں تو دوسری صورت میں ختم ہونے والی اشیاء کی فراہمی کریں۔ یہ ہوسکتا ہے کیونکہ:

  • منتخب کردہ بیک اینڈ ڈائرکٹر نیچے ہے
  • ایک مختلف تھریڈ نے پہلے ہی اختتام پر درخواست کی ہے جو ابھی ختم نہیں ہوئی ہے۔
وی سی ایل میں دونوں ہی معاملات ایک جیسے ہی نمٹائے جاتے ہیں۔

sub vcl_recv {

if (req.backend.healthy) {

set req.grace = 30s;

} else {

set req.grace = 1h;

}

}


sub vcl_fetch {

set beresp.grace = 1h;

}

یہ ترتیب وارنیش سے کہتی ہے کہ آخری سرے کی جانچ کرے اور اگر کوئی پریشانی ہو تو اس کی مدت بڑھا۔ مذکورہ بالا مثال میں ہدایت "req.backend.healthy" بھی متعارف کرایا گیا ہے ، جس کا استعمال پچھلے سرے کو چیک کرنے کے لئے کیا جاتا ہے۔ جب واقعی آپ کے پاس متعدد پچھلے حصے ہوں گے تو یہ واقعی مفید ہے ، لہذا آئیے ایک مزید جدید مثال پر ایک نظر ڈالیں۔

اعلی درجے کا استعمال: تقسیم ماحول میں ایک لچکدار ویب سرور بنائیں

یہ ہماری حتمی تشکیل فائل ہے جو ہم نے اب تک دیکھے ہوئے تمام اختیارات کے ساتھ کی ہے اور جانچ پڑتال کے لئے کچھ خاص ہدایت کے ساتھ دو پیٹھ کی تعریف ختم ہوجاتی ہے۔ اس طرح وارنش یہ طے کرتی ہے کہ آیا ویب سرور زندہ ہے یا نہیں۔


.url

وارنش اس یو آر ایل کے ساتھ پچھلے سرے پر درخواستیں کرے گی۔


.وقت ختم

اس بات کا تعین کرتا ہے کہ جانچ کتنی تیزی سے ختم ہوجائے گی۔ آپ کو کسی نمبر کے ساتھ ٹائم یونٹ کی وضاحت کرنی ہوگی ، جیسے "0.1 s" ، "1230 ms" یا "1 h"۔


.interval

کتنے دن انتخابات کے درمیان انتظار کرنا ہے۔ آپ کو یہاں بھی ٹائم یونٹ کی وضاحت کرنی ہوگی۔ غور کریں کہ یہ "شرح" نہیں ہے بلکہ "وقفہ" ہے۔ سب سے کم رائے شماری کی شرح (. ٹائم آؤٹ + داخلہ) ہے۔


.Window

کتنے تازہ ترین پولز پر غور کرنا ہے جب اس بات کا تعین کرتے وقت کہ آخر کا حصہ صحت مند ہے یا نہیں۔


.حیرت

پچھلے سرے کو صحت مند قرار دینے کے ل How کتنے .window آخری رائے شماری کے اچھے ہونے چاہ.۔


اب ہم "req.backend.healthy" ہدایت کا استعمال کرسکتے ہیں اور ایک بولین نتیجہ حاصل کرسکتے ہیں جو ہمیں بتاتا ہے کہ آیا پچھلا حصہ (زندہ) زندہ ہے یا نہیں۔

#

# Customized VCL file for serving up a Wordpress site with multiple back-ends.

#


# Define the internal network subnet.

# These are used below to allow internal access to certain files while not

# allowing access from the public internet .

acl internal {

"10.100.0.0"/24;

}


# Define the list of our backends (web servers), they Listen on port 8080


backend web1 { .host = "10.100.0.1"; .port = "8080"; .probe = { .url = "/status.php"; .interval = 5s; .timeout = 1s; .window = 5;.threshold = 3; }}

backend web2 { .host = "10.100.0.2"; .port = "8080"; .probe = { .url = "/status.php"; .interval = 5s; .timeout = 1s; .window = 5;.threshold = 3; }}


# Define the director that determines how to distribute incoming requests.

director default_director round-robin {

{ .backend = web1; }

{ .backend = web2; }

}


# Respond to incoming requests.

sub vcl_recv {


set req.backend = default_director;

# Use anonymous, cached pages if all backends are down.

if (!req.backend.healthy) {

unset req.http.Cookie;

set req.grace = 6h;

} else {

set req.grace = 30s;

}

# Unset all cookies if not Wordpress admin - otherwise login will fail


if (!(req.url ~ "wp-(login| admin )")) {

unset req.http.cookie;

return(lookup);

}


# If you request the special pages go directly to them


if (req.url ~ "wp-(login| admin )") {

return (pipe);

}


# Always cache the following file types for all users.

if (req.url ~ "(?i)\.(png|gif|jpeg|jpg|ico|swf|css|js|html|htm)(\?+)?$") {

unset req.http.Cookie;

}


}


# Code determining what to do when serving items from the web servers.

sub vcl_fetch {

# Don't allow static files to set cookies.

if (req.url ~ "(?i)\.(png|gif|jpeg|jpg|ico|swf|css|js|html|htm)(\?+)?$") {

# beresp == Back-end response from the web server.

unset beresp.http.set-cookie;

}


# Allow items to be stale if needed.

set beresp.grace = 6h;

}

ایک طاقتور ٹول

یہ صرف کچھ مثالیں ہیں جو آپ کو وارنش کو استعمال کرنے میں مدد فراہم کرسکتی ہیں۔ یہ ٹول واقعی طاقتور ہے اور زیادہ ہارڈ ویئر یا ورچوئل مشینیں خریدے بغیر آپ کو عمدہ کارکردگی کو فروغ دینے میں مدد فراہم کرتا ہے۔ بہت سے ویب سائٹ ایڈمنسٹریٹرز کے لئے ، یہ حقیقی فائدہ ہے۔

وارنش: کم کرنے کے لئے تیار!