বাড়ি সফটওয়্যার বার্নিশ: স্ল্যাশডটেড হতে প্রস্তুত!

বার্নিশ: স্ল্যাশডটেড হতে প্রস্তুত!

সুচিপত্র:

Anonim

ওয়েবসাইটের পারফরম্যান্সের ক্ষেত্রে, বার্নিশ হট প্রযুক্তি technology একটি সাধারণ ইনস্টলেশন এবং কনফিগারেশনের মাধ্যমে, কোনও ওয়েবসাইটের কার্যকারিতা বাড়ানো এবং কেবলমাত্র একটি ছোট ভার্চুয়াল ব্যক্তিগত সার্ভার সহ মিলিয়ন পৃষ্ঠাগুলি পরিবেশন করা সম্ভব।, আমি আপনাকে চারটি সম্ভাব্য কনফিগারেশন দেখাব যা আপনাকে আপনার সাইটের প্রতিক্রিয়া সময়কে উন্নত করতে সহায়তা করবে, আপনি শত, হাজার বা লক্ষ লক্ষ পৃষ্ঠাগুলি সরবরাহ করছেন কিনা।

বার্নিশের একটি ভূমিকা

বার্নিশ-ক্যাশে ওয়েবসাইট বিষয়বস্তু ক্যাশে করার লক্ষ্য সহ একটি ওয়েব ত্বরণকারী। এটি একটি ওপেন-সোর্স প্রকল্প যা উদ্দেশ্য করে কোডটি পরিবর্তন না করে - অ আক্রমণাত্মকভাবে ওয়েবসাইটগুলিতে অ্যাক্সেসের অনুকূলিতকরণ এবং গতি বাড়ানো এবং আপনাকে আপনার ওয়েবসাইটে নিজের হাত দেওয়ার অনুমতি দেওয়া allow


এটি বার্নিশ ক্যাশের স্রষ্টা যিনি এটিকে একটি ওয়েব ত্বরণকারী বলেছেন, কারণ এর প্রাথমিক লক্ষ্য ওয়েবসাইটটির সম্মুখ প্রান্তটি উন্নত করা এবং গতিময় করা। বার্নিশ ওয়েব সার্ভার দ্বারা প্রদত্ত পৃষ্ঠাগুলির অনুলিপিগুলি তার ক্যাশে সংরক্ষণ করে এটি অর্জন করে। পরের বার একই পৃষ্ঠার জন্য অনুরোধ করা হলে, বার্নিশ ওয়েব সার্ভার থেকে পৃষ্ঠাটি অনুরোধ করার পরিবর্তে অনুলিপিটি সরবরাহ করবে, যার ফলে অসাধারণ পারফরম্যান্স বাড়বে।


বার্নিশ ক্যাশের আরেকটি মূল বৈশিষ্ট্য হ'ল এর কার্যকারিতা ছাড়াও এর কনফিগারেশন ভাষা, ভিসিএল এর নমনীয়তা। ভিসিএল কীভাবে আগত অনুরোধগুলি পরিচালনা করা উচিত সে সম্পর্কে নীতিমালা লিখতে সক্ষম করে। এই জাতীয় নীতিমালায় আপনি কোন বিষয়বস্তুটি পরিবেশন করতে চান সেখান থেকে আপনি কীভাবে সামগ্রী পেতে চান এবং কীভাবে অনুরোধ বা প্রতিক্রিয়া পরিবর্তন করা উচিত তা সিদ্ধান্ত নিতে পারেন।


কনফিগারেশনের নিম্নলিখিত উদাহরণগুলিতে, আমি আপনাকে দেখাব যে কোন লক্ষ্য অর্জনের জন্য কোন ভিসিএল বিধি বিধান করা হয়েছে, চিত্র এবং স্ট্যাটিক অবজেক্টের একটি সাধারণ ক্যাচিং থেকে শুরু করে বিতরণ পরিবেশে বার্নিশ ব্যবহার করা বা এটি লোড ব্যালেন্সার হিসাবে কাজ করা।


নিম্নলিখিত সমস্ত উদাহরণ বার্নিশ 3.x এর জন্য are দয়া করে মনে রাখবেন যে বার্নিশ ২.x বিভিন্ন বাক্য গঠন এবং নিয়ম ব্যবহার করে, সুতরাং এই উদাহরণগুলি সেই সংস্করণটির সাথে সামঞ্জস্যপূর্ণ নয়।


নীচে ওয়ার্নিশের প্রধান রাজ্যগুলি রয়েছে, যা আমরা ভিসিএল কনফিগারেশন ফাইলে ব্যবহার করব:


recv

এটি প্রথম ফাংশন যা আপনাকে অনুরোধ গ্রহণের সময় ডাকা হয়। এখানে অনুরোধটি ক্যাশে উপস্থিত রয়েছে কিনা তা যাচাই করতে যাওয়ার আগে আমরা হেরফেরিট করতে পারি। যদি কোনও অনুরোধ কোনও ক্যাশে রাখা যায় না, তবে অনুরোধটি প্রেরণ করা হবে এমন ব্যাক-এন্ড সার্ভারটিও এই পর্যায়ে বেছে নেওয়া যেতে পারে।


পাস

আমরা যখন ওয়েব সার্ভারে অনুরোধটি পাস করতে এবং উত্তরটি ক্যাশে করতে চাই তখন আমরা এই ফাংশনটি ব্যবহার করতে পারি।


নল

এই ফাংশনটি বার্নিশকে বাইপাস করে এবং ওয়েব সার্ভারে অনুরোধ প্রেরণ করে।


খুঁজে দেখো

একটি তদন্ত সহ, বার্নিশ প্রতিক্রিয়া ক্যাশে উপস্থিত এবং বৈধ কিনা তা যাচাই করতে বলে asks


আনা

এই ফাংশনটি পাস বা মিসের মাধ্যমে পিছনের প্রান্ত থেকে সামগ্রী পুনরুদ্ধারের পরে ডাকা হয়।

মূল বিষয়গুলি: ক্যাশে চিত্রসমূহ

সুতরাং কনফিগারেশন একটি উদাহরণ তাকান। এই প্রথম উদাহরণে আমরা কেবল সিএসএস ফাইলের মতো চিত্রগুলি এবং স্ট্যাটিক ফাইলগুলি ক্যাশে করব। আপনি যে ওয়েবসাইটটি উত্সাহিত করতে চান তা যখন জানেন না তখন এই কনফিগারেশনটি সত্যই কার্যকর, তাই আপনি কেবলমাত্র সিদ্ধান্ত নিতে পারেন যে সমস্ত চিত্র, সিএসএস এবং জাভাস্ক্রিপ্ট সমস্ত ব্যবহারকারীর জন্য এক। ব্যবহারকারীদের আলাদা করার জন্য, এইচটিটিপি প্রোটোকল কুকি ব্যবহার করে, সুতরাং আমাদের এই ধরণের অনুরোধে তাদেরকে নির্মূল করতে হবে যাতে তারা সকলেই বার্নিশের জন্য সমান:

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;

}

}

আপনি দেখতে পারেন যে এই উদাহরণস্বরূপ, আমরা আমাদের ওয়েবসাইট থেকে সমস্ত পৃষ্ঠাগুলি ক্যাশে করি তবে ইউআরএলগুলিতে "wp- অ্যাডমিন" বা "ডাব্লুপিপি-লগইন" রয়েছে তাদের জন্য লগ ইন করার জন্য "বিশেষ" অবস্থানগুলি ব্যবহৃত হয় প্রশাসক হিসাবে ওয়ার্ডপ্রেস। এর মতো, আমরা সরাসরি ওয়েব সার্ভারের সাথে কথা বলতে এবং বার্নিশ ক্যাশে বাইপাস করতে চাই।


স্বাভাবিকভাবেই, আপনি যদি দ্রুপাল, জুমলা বা কাস্টম তৈরি ওয়েবসাইট ব্যবহার করেন তবে আপনাকে এই নিয়মগুলি পরিবর্তন করতে হবে তবে লক্ষ্যটি সর্বদা এক রকম: সমস্ত গতিশীল পৃষ্ঠা এবং ক্যাশে আপনার পিছনের প্রান্তে প্রেরণ করতে।

স্ট্যান্ডার্ড ++: সার্ভারের রক্ষণশীলতা বাড়ান

কিছু সময় ওয়েব সার্ভারগুলি ধীরে ধীরে হয়ে যায় কারণ তাদের উচ্চ লোড থাকে। বার্নিশ এটিতেও সহায়তা করতে পারে। বার্নিশটি নীচের দিকে থাকলে বা খুব ধীরে ধীরে উত্তর দিচ্ছে তা দিয়ে কথা এড়াতে বার্নিশকে জানাতে আমরা কিছু বিশেষ নির্দেশনা ব্যবহার করতে পারি। এই ক্ষেত্রে বার্নিশ "অনুগ্রহ" নির্দেশিকা ব্যবহার করে।


বার্নিশের সুযোগে অনুগ্রহের অর্থ পরিস্থিতি যখন ডেকে আসে অন্যথায় মেয়াদোত্তীর্ণ অবজেক্টগুলি সরবরাহ করা। এটি ঘটতে পারে কারণ:

  • নির্বাচিত ব্যাক-এন্ড ডিরেক্টর ডাউন আছেন
  • একটি ভিন্ন থ্রেড ইতিমধ্যে শেষ শেষের জন্য একটি অনুরোধ করেছে যা এখনও শেষ হয়নি।
দুটি মামলাই ভিসিএলে একইভাবে পরিচালিত হয়:

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

বার্নিশ এই URL টি দিয়ে পিছনের দিকে অনুরোধ করবে।


.সময় শেষ

কত দ্রুত তদন্ত শেষ করতে হবে তা নির্ধারণ করে। "0.1 s", "1230 এমএস" বা "1 এইচ" এর মতো একটি সংখ্যার সাথে আপনাকে অবশ্যই সময় ইউনিট নির্দিষ্ট করতে হবে।


.অন্তর

নির্বাচনের মধ্যে কতক্ষণ অপেক্ষা করতে হবে। আপনাকে অবশ্যই এখানে একটি সময় ইউনিট নির্দিষ্ট করতে হবে। লক্ষ্য করুন যে এটি কোনও "হার" নয় বরং একটি "বিরতি"। সর্বনিম্ন পোলের হার (.টাইমআউট + .আরকাল) val


.জানলা

পিছনের প্রান্তটি স্বাস্থ্যকর কিনা তা নির্ধারণ করার সময় সর্বশেষতম পোলের মধ্যে কতটি বিবেচনা করা উচিত।


.threshold

পিছনের প্রান্তটি স্বাস্থ্যকর হিসাবে ঘোষণার জন্য কতগুলি। উইন্ডো শেষের পোলগুলি অবশ্যই ভাল be


এখন আমরা "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;

}

একটি শক্তিশালী সরঞ্জাম

এগুলি কেবলমাত্র কয়েকটি উদাহরণ যা আপনাকে বার্নিশ ব্যবহার শুরু করতে সহায়তা করতে পারে। এই সরঞ্জামটি সত্যই শক্তিশালী এবং আরও হার্ডওয়ার বা ভার্চুয়াল মেশিন না কিনে আপনাকে দুর্দান্ত পারফরম্যান্স বৃদ্ধিতে সহায়তা করতে পারে। অনেক ওয়েবসাইট প্রশাসকের জন্য, এটি আসল উপকার।

বার্নিশ: স্ল্যাশডটেড হতে প্রস্তুত!