వార్నిష్: స్లాష్‌డాట్ చేయడానికి సిద్ధం!

రచయిత: Judy Howell
సృష్టి తేదీ: 25 జూలై 2021
నవీకరణ తేదీ: 11 మే 2024
Anonim
ది ప్రాడిజీ - ఫైర్‌స్టార్టర్ (అధికారిక వీడియో)
వీడియో: ది ప్రాడిజీ - ఫైర్‌స్టార్టర్ (అధికారిక వీడియో)

విషయము


Takeaway:

ఈ సాఫ్ట్‌వేర్ ఏదైనా వెబ్‌సైట్ పనితీరును పెంచుతుంది మరియు చిన్న వర్చువల్ ప్రైవేట్ సర్వర్‌తో మిలియన్ పేజీల వరకు సేవలు అందిస్తుంది.

వెబ్‌సైట్ పనితీరు విషయానికి వస్తే, వార్నిష్ ఒక హాట్ టెక్నాలజీ. సరళమైన ఇన్‌స్టాలేషన్ మరియు కాన్ఫిగరేషన్‌తో, ఏదైనా వెబ్‌సైట్ పనితీరును పెంచడం మరియు చిన్న వర్చువల్ ప్రైవేట్ సర్వర్‌తో మిలియన్ పేజీల వరకు సేవ చేయడం సాధ్యపడుతుంది. ఈ వ్యాసంలో, మీరు వంద, వేల లేదా మిలియన్ల పేజీలకు సేవ చేసినా, మీ సైట్ యొక్క ప్రతిస్పందన సమయాన్ని మెరుగుపరచడంలో మీకు సహాయపడే నాలుగు కాన్ఫిగరేషన్‌లను నేను మీకు చూపిస్తాను.

వార్నిష్కు ఒక పరిచయం

వార్నిష్-కాష్ వెబ్‌సైట్ కంటెంట్‌ను కాషింగ్ చేయాలనే లక్ష్యంతో వెబ్ యాక్సిలరేటర్. కోడ్‌ను మార్చకుండా - వెబ్‌సైట్‌లకు ప్రాప్యతను ఆప్టిమైజ్ చేయడం మరియు వేగవంతం చేయడం దీని యొక్క ఓపెన్-సోర్స్ ప్రాజెక్ట్ - మరియు మీ వెబ్‌సైట్‌లో మీ చేతులను ఉంచడానికి మిమ్మల్ని అనుమతిస్తుంది.

ఇది వార్నిష్ కాష్ యొక్క సృష్టికర్తలు దీనిని వెబ్ యాక్సిలరేటర్ అని పిలిచారు, ఎందుకంటే వెబ్‌సైట్ల ఫ్రంట్ ఎండ్‌ను మెరుగుపరచడం మరియు వేగవంతం చేయడం దీని ప్రాథమిక లక్ష్యం. వెబ్ సర్వర్ అందించే పేజీల కాపీలను దాని కాష్‌లో భద్రపరచడం ద్వారా వార్నిష్ దీనిని సాధిస్తుంది. తదుపరిసారి అదే పేజీని అభ్యర్థించినప్పుడు, వెబ్ సర్వర్ నుండి పేజీని అభ్యర్థించే బదులు వార్నిష్ కాపీని అందిస్తాడు, దీని ఫలితంగా అద్భుతమైన పనితీరు పెరుగుతుంది.

వార్నిష్ కాష్ యొక్క ముఖ్య లక్షణాలలో మరొకటి, దాని పనితీరుతో పాటు, దాని కాన్ఫిగరేషన్ భాష VCL యొక్క వశ్యత. ఇన్కమింగ్ అభ్యర్థనలను ఎలా నిర్వహించాలో విధానాలను వ్రాయడం VCL సాధ్యపడుతుంది. అటువంటి విధానంలో, మీరు ఏ కంటెంట్‌ను అందించాలనుకుంటున్నారో, మీరు ఎక్కడ నుండి కంటెంట్‌ను పొందాలనుకుంటున్నారో మరియు అభ్యర్థన లేదా ప్రతిస్పందనను ఎలా మార్చాలో మీరు నిర్ణయించుకోవచ్చు.

ఆకృతీకరణ యొక్క కింది ఉదాహరణలలో, చిత్రాలు మరియు స్టాటిక్ వస్తువుల యొక్క సాధారణ కాషింగ్ నుండి, పంపిణీ చేయబడిన వాతావరణంలో వార్నిష్ను ఉపయోగించడం లేదా లోడ్ బ్యాలెన్సర్‌గా పనిచేయడం వంటి కొన్ని లక్ష్యాలను సాధించడానికి ఏ VCL నియమాలను నేను మీకు చూపుతాను.

కింది ఉదాహరణలన్నీ వార్నిష్ 3.x. వార్నిష్ 2.x విభిన్న వాక్యనిర్మాణం మరియు నియమాలను ఉపయోగిస్తుందని దయచేసి గమనించండి, కాబట్టి ఈ ఉదాహరణలు ఆ సంస్కరణకు అనుకూలంగా లేవు.

ఈ క్రిందివి వార్నిష్ యొక్క ప్రధాన రాష్ట్రాలు, ఇవి VCL కాన్ఫిగరేషన్ ఫైల్‌లో బాగా ఉపయోగిస్తాయి:

recv
అభ్యర్థనను స్వీకరించినప్పుడు పిలువబడే మొదటి ఫంక్షన్ ఇది. ఇక్కడ మేము అభ్యర్థన కాష్‌లో ఉందో లేదో తనిఖీ చేయడానికి ముందు మార్చవచ్చు. అభ్యర్థనను కాష్‌లో ఉంచలేకపోతే, అభ్యర్థన పంపబడే బ్యాక్ ఎండ్ సర్వర్‌ను కూడా ఈ దశలో ఎంచుకోవచ్చు.

పాస్
మేము అభ్యర్థనను వెబ్ సర్వర్‌కు పంపించాలనుకున్నప్పుడు మరియు జవాబును కాష్ చేయాలనుకున్నప్పుడు మేము ఈ ఫంక్షన్‌ను ఉపయోగించవచ్చు.

పైపు
ఈ ఫంక్షన్ వార్నిష్‌ను దాటవేస్తుంది మరియు వెబ్ సర్వర్‌కు అభ్యర్థన.

పైకి చూడు
శోధనతో, వార్ష్ స్పందన కాష్‌లో ఉందో లేదో ధృవీకరించమని అడుగుతుంది.

పొందడం
బ్యాక్ ఎండ్ నుండి కంటెంట్ రికవరీ పాస్ లేదా మిస్ ద్వారా ప్రారంభించిన తర్వాత ఈ ఫంక్షన్ అంటారు.

బేసిక్స్: కాష్ ఇమేజెస్

కాబట్టి కాన్ఫిగరేషన్ యొక్క ఉదాహరణను చూద్దాం. ఈ మొదటి ఉదాహరణలో, చిత్రాలను మరియు CSS ఫైల్స్ వంటి స్టాటిక్ ఫైళ్ళను క్యాష్ చేయండి. మీరు పెంచాలనుకుంటున్న వెబ్‌సైట్ మీకు తెలియకపోతే ఈ కాన్ఫిగరేషన్ నిజంగా ఉపయోగపడుతుంది, కాబట్టి మీరు అన్ని చిత్రాలు, CSS మరియు జావాస్క్రిప్ట్ అన్ని వినియోగదారులకు ఒకటేనని నిర్ణయించుకోవచ్చు. వినియోగదారులను వేరు చేయడానికి, HTTP ప్రోటోకాల్ కుకీలను ఉపయోగిస్తుంది, కాబట్టి మేము వాటిని ఈ రకమైన అభ్యర్థనలో తొలగించాలి, కాబట్టి అవి వార్నిష్ కోసం ఒకే విధంగా ఉంటాయి:

ఉప vcl_recv {

if (req.url ~ "* . (png | gif | jpg | swf | css | js)" {
సెట్ చేయని req.http.cookie;

సెట్ చేయని req.http.Vary;
తిరిగి (శోధన);
}

# చిత్రం కాష్‌లోకి చేర్చడానికి ముందు కుకీని తీసివేయండి.
ఉప vcl_fetch {
if (req.url ~ ". (png | gif | jpg | swf | css | js) $") {
సెట్ చేయని beresp.http.set-cookie;
}
మరియు అది. ఈ VCL ఫైల్‌తో మీరు స్టాటిక్ కంటెంట్‌ను సులభంగా క్యాష్ చేయవచ్చు.

ప్రమాణం: కాష్ చిత్రాలు మరియు పేజీలు

సాధారణంగా, మీరు మీ వెబ్‌సైట్ యొక్క స్టాటిక్ విషయాలను క్యాష్ చేయాలనుకోవడం లేదు, కానీ మీరు మీ వెబ్ సర్వర్ ద్వారా ఉత్పత్తి చేయబడిన కొన్ని డైనమిక్ పేజీలను కూడా కాష్ చేయాలనుకుంటున్నారు, కానీ అది వినియోగదారులందరికీ సమానంగా ఉంటుంది - లేదా కనీసం మీ అనామక వినియోగదారులందరికీ. ఈ దశలో, ఏ పేజీలను కాష్ చేయవచ్చో మరియు ఏది చేయలేదో ఎంచుకోవాలి.

దీనికి మంచి ఉదాహరణ WordPress, సాధారణంగా ఉపయోగించే కంటెంట్ మేనేజ్‌మెంట్ సిస్టమ్‌లలో ఒకటి. WordPress వెబ్‌సైట్ పేజీలను PHP తో డైనమిక్‌గా ఉత్పత్తి చేస్తుంది మరియు MySQL డేటాబేస్‌కు ప్రశ్నలు. ఇది చాలా బాగుంది ఎందుకంటే మీరు మీ వెబ్‌సైట్‌ను అడ్మినిస్ట్రేషన్ ఇంటర్‌ఫేస్ నుండి కొన్ని క్లిక్‌లతో సులభంగా అప్‌డేట్ చేయవచ్చు, కానీ ఉపయోగించిన వనరుల పరంగా కూడా ఇది ఖరీదైనది. వినియోగదారుడు హోమ్‌పేజీలో అడుగుపెట్టిన ప్రతిసారీ ఒకే PHP స్క్రిప్ట్ మరియు MySQL ప్రశ్నను ఎందుకు అమలు చేయాలి? ఎక్కువగా సందర్శించిన పేజీలను క్యాష్ చేయడానికి మరియు అద్భుతమైన ఫలితాలను సాధించడానికి మేము వార్నిష్‌ను ఉపయోగించవచ్చు.

ఇవి WordPress ఇన్‌స్టాలేషన్‌లో ఉపయోగపడే కొన్ని నియమాలు:

ఉప vcl_recv {
# మేము ఇప్పటికే కంప్రెస్ చేసిన ఫార్మాట్‌లను కుదించడం లేదని నిర్ధారించుకుందాం.
if (req.http.Accept-Encoding) {
if (req.url ~ ". (jpg | png | gif | gz | tgz | bz2 | mp3 | mp4 | m4v) (?. * |) $") {
req.http.Accept-Encoding ను తొలగించండి;
} elsif (req.http.Accept-Encoding ~ "gzip") {
req.http.Accept-Encoding = "gzip" ని సెట్ చేయండి;
} elsif (req.http.Accept-Encoding ~ "deflate") {
req.http.Accept-Encoding = "deflate" ని సెట్ చేయండి;
} లేకపోతే {
req.http.Accept-Encoding ను తొలగించండి;
}
}

if (req.url ~ "^ / $") {
సెట్ చేయని req.http.cookie;
}

# WordPress అడ్మిన్ కాకపోతే అన్ని కుకీలను సెట్ చేయవద్దు - లేకపోతే లాగిన్ విఫలమవుతుంది

if (! (req.url w "wp- (లాగిన్ | అడ్మిన్)")) {
సెట్ చేయని req.http.cookie;
తిరిగి (శోధన);
}

# మీరు అభ్యర్థిస్తే ప్రత్యేక పేజీలు నేరుగా వాటికి వెళ్లండి

if (req.url w "wp- (లాగిన్ | అడ్మిన్)") {
తిరిగి (పైపు);
}

}

ఉప vcl_miss {
if (! (req.url w "wp- (లాగిన్ | అడ్మిన్)")) {
సెట్ చేయని req.http.cookie;
}
(req.url ~ "^ / +. (jpeg | jpg | png | gif | ico | js | css | txt | gz | zip | lzma | bz2 | tgz | tbz | html | htm) (? $ ") {
సెట్ చేయని req.http.cookie;
సెట్ req.url = regsub (req.url, " ?. $", "");
}
if (req.url ~ "^ / $") {
సెట్ చేయని req.http.cookie;
}
}
ఉప vcl_fetch {
if (req.url ~ "^ / $") {
సెట్ చేయని beresp.http.set-cookie;
}
# WordPress అడ్మిన్ కాకపోతే అన్ని కుకీలను సెట్ చేయవద్దు - లేకపోతే లాగిన్ విఫలమవుతుంది
if (! (req.url w "wp- (లాగిన్ | అడ్మిన్)")) {
సెట్ చేయని beresp.http.set-cookie;
}
}
ఈ ఉదాహరణలో, మేము మా వెబ్‌సైట్ నుండి అన్ని పేజీలను కాష్ చేస్తామని మీరు చూడవచ్చు, కాని url లో "wp- అడ్మిన్" లేదా "wp-login" ఉన్న వాటి కోసం తీగలను లాగిన్ చేయడానికి ఉపయోగించే "ప్రత్యేక" స్థానాలు నిర్వాహకుడిగా WordPress. అందుకని, మేము వెబ్ సర్వర్‌తో నేరుగా మాట్లాడాలనుకుంటున్నాము మరియు వార్నిష్ కాష్‌ను దాటవేయాలనుకుంటున్నాము.

సహజంగానే, మీరు ద్రుపాల్, జూమ్ల లేదా అనుకూల-నిర్మిత వెబ్‌సైట్‌ను ఉపయోగిస్తే, మీరు ఈ నియమాలను మార్చాలి, కానీ లక్ష్యం ఎల్లప్పుడూ ఒకే విధంగా ఉంటుంది: అన్ని డైనమిక్ పేజీలకు మరియు కాష్‌కు మీరు మీ వెనుక చివర వరకు చేయవచ్చు.

ప్రామాణిక ++: సర్వర్ స్థితిస్థాపకతను పెంచండి

వెబ్ సర్వర్‌లు అధిక లోడ్‌ను కలిగి ఉన్నందున అవి నెమ్మదిగా మారతాయి. వార్నిష్ కూడా దీనికి సహాయపడుతుంది. బ్యాక్ ఎండ్ డౌన్ డౌన్ లేదా చాలా నెమ్మదిగా సమాధానం ఇస్తుంటే మాట్లాడకుండా ఉండటానికి వార్నిష్కు చెప్పడానికి మేము కొన్ని ప్రత్యేక ఆదేశాలను ఉపయోగించవచ్చు. ఈ సందర్భాలలో వార్నిష్ "దయ" ఆదేశాన్ని ఉపయోగిస్తుంది.

వార్నిష్ యొక్క పరిధిలో ఉన్న దయ అంటే పరిస్థితులు పిలిచినప్పుడు గడువు ముగిసిన వస్తువులను పంపిణీ చేయడం. ఇది జరగవచ్చు ఎందుకంటే:
  • ఎంచుకున్న బ్యాక్ ఎండ్ డైరెక్టర్ డౌన్
  • వేరే థ్రెడ్ ఇప్పటికే బ్యాక్ ఎండ్‌కు అభ్యర్థన చేసింది, అది ఇంకా పూర్తి కాలేదు.
VCL లో రెండు కేసులు ఒకే విధంగా నిర్వహించబడతాయి:

ఉప vcl_recv {
if (req.backend.healthy) {
సెట్ req.grace = 30 సె;
} లేకపోతే {
సెట్ req.grace = 1 గం;
}
}

ఉప vcl_fetch {
సెట్ beresp.grace = 1 క;
}
ఈ కాన్ఫిగరేషన్ వార్నిష్‌కు బ్యాక్ ఎండ్‌ను పరీక్షించమని మరియు కొన్ని సమస్యలు ఉంటే గ్రేస్ పీరియడ్‌ను పెంచమని చెబుతుంది. పై ఉదాహరణ "req.backend.healthy" డైరెక్టివ్‌ను కూడా పరిచయం చేస్తుంది, ఇది బ్యాక్ ఎండ్‌ను తనిఖీ చేయడానికి ఉపయోగించబడుతుంది. మీకు బహుళ వెనుక చివరలు ఉన్నప్పుడు ఇది నిజంగా ఉపయోగపడుతుంది, కాబట్టి మరింత ఆధునిక ఉదాహరణను చూద్దాం.

అధునాతన ఉపయోగం: పంపిణీ చేయబడిన వాతావరణంలో స్థితిస్థాపక వెబ్ సర్వర్‌ను సృష్టించండి

ఇది ఇప్పటివరకు మేము చూసిన అన్ని ఎంపికలతో కూడిన మా చివరి కాన్ఫిగరేషన్ ఫైల్ మరియు రెండు బ్యాక్ యొక్క నిర్వచనం ప్రోబ్ కోసం కొన్ని ప్రత్యేక ఆదేశాలతో ముగుస్తుంది. వెబ్ సర్వర్ సజీవంగా ఉందా లేదా అని వార్నిష్ నిర్ణయిస్తుంది.

.url
ఈ URL తో వార్నిష్ బ్యాక్ ఎండ్‌కు అభ్యర్థనలు చేస్తుంది.

.సమయం ముగిసినది
ప్రోబ్ ఎంత వేగంగా పూర్తి కావాలో నిర్ణయిస్తుంది. మీరు "0.1 s", "1230 ms" లేదా "1 h" వంటి సంఖ్యతో సమయ యూనిట్‌ను పేర్కొనాలి.

.విరామం
పోల్స్ మధ్య ఎంతసేపు వేచి ఉండాలి. మీరు ఇక్కడ కూడా టైమ్ యూనిట్‌ను పేర్కొనాలి. ఇది "రేటు" కాదు "విరామం" అని గమనించండి. అతి తక్కువ పోల్ రేటు (.టైమ్‌అవుట్ + .ఇంటర్వల్).

.కిటికీ
బ్యాక్ ఎండ్ ఆరోగ్యంగా ఉందో లేదో నిర్ణయించేటప్పుడు ఎన్ని తాజా పోల్స్ పరిగణించాలి.

.threshold
బ్యాక్ ఎండ్ ఆరోగ్యంగా ప్రకటించాలంటే .విండో చివరి ఎన్నికలు ఎన్ని ఉండాలి.

ఇప్పుడు మనం "req.backend.healthy" డైరెక్టివ్‌ని ఉపయోగించుకోవచ్చు మరియు బ్యాక్ ఎండ్ (లు) సజీవంగా ఉన్నాయా లేదా అనే విషయాన్ని తెలియజేసే బూలియన్ ఫలితాన్ని పొందవచ్చు.

#
# బహుళ బ్యాక్ ఎండ్లతో ఒక WordPress సైట్‌ను అందించడానికి అనుకూలీకరించిన VCL ఫైల్.
#

# అంతర్గత నెట్‌వర్క్ సబ్‌నెట్‌ను నిర్వచించండి.
# కాకపోయినా కొన్ని ఫైల్‌లకు అంతర్గత ప్రాప్యతను అనుమతించడానికి ఇవి క్రింద ఉపయోగించబడతాయి
# పబ్లిక్ ఇంటర్నెట్ నుండి ప్రాప్యతను అనుమతిస్తుంది.
acl అంతర్గత {
'10.100.0.0'/24;
}

# మా బ్యాకెండ్ల (వెబ్ సర్వర్లు) జాబితాను నిర్వచించండి, అవి పోర్ట్ 8080 లో వింటాయి

బ్యాకెండ్ వెబ్ 1 {. హోస్ట్ = "10.100.0.1"; .port = "8080"; .probe = {.url = "/status.php"; .interval = 5 సె; .టైమ్అవుట్ = 1 సె; .విండో = 5; .థ్రెషోల్డ్ = 3; }}
బ్యాకెండ్ వెబ్ 2 {. హోస్ట్ = "10.100.0.2"; .port = "8080"; .probe = {.url = "/status.php"; .interval = 5 సె; .టైమ్అవుట్ = 1 సె; .విండో = 5; .థ్రెషోల్డ్ = 3; }}


# ఇన్‌కమింగ్ అభ్యర్థనలను ఎలా పంపిణీ చేయాలో నిర్ణయించే దర్శకుడిని నిర్వచించండి.
డైరెక్టర్ డిఫాల్ట్_డైరెక్టర్ రౌండ్-రాబిన్ {
{.బ్యాకెండ్ = వెబ్ 1; }
{.బ్యాకెండ్ = వెబ్ 2; }
}

# ఇన్‌కమింగ్ అభ్యర్థనలకు ప్రతిస్పందించండి.
ఉప vcl_recv {

req.backend = default_director సెట్ చేయండి;

# అన్ని బ్యాకెండ్లు డౌన్ అయితే అనామక, కాష్ చేసిన పేజీలను ఉపయోగించండి.
if (! req.backend.healthy) {
సెట్ చేయని req.http.Cookie;
సెట్ req.grace = 6 గం;
} లేకపోతే {
సెట్ req.grace = 30 సె;
}

# WordPress అడ్మిన్ కాకపోతే అన్ని కుకీలను సెట్ చేయవద్దు - లేకపోతే లాగిన్ విఫలమవుతుంది

if (! (req.url w "wp- (లాగిన్ | అడ్మిన్)")) {
సెట్ చేయని req.http.cookie;
తిరిగి (శోధన);
}

# మీరు అభ్యర్థిస్తే ప్రత్యేక పేజీలు నేరుగా వాటికి వెళ్లండి

if (req.url w "wp- (లాగిన్ | అడ్మిన్)") {
తిరిగి (పైపు);
}

# వినియోగదారులందరికీ కింది ఫైల్ రకాలను ఎల్లప్పుడూ కాష్ చేయండి.
if (req.url ~ "(? i) . (png | gif | jpeg | jpg | ico | swf | css | js | html | htm) (? +)? $") {
సెట్ చేయని req.http.Cookie;
}

}

వెబ్ సర్వర్ల నుండి అంశాలను అందించేటప్పుడు ఏమి చేయాలో నిర్ణయించే కోడ్.
ఉప vcl_fetch {
# కుకీలను సెట్ చేయడానికి స్టాటిక్ ఫైల్‌లను అనుమతించవద్దు.
if (req.url ~ "(? i) . (png | gif | jpeg | jpg | ico | swf | css | js | html | htm) (? +)? $") {
# beresp == వెబ్ సర్వర్ నుండి బ్యాక్ ఎండ్ ప్రతిస్పందన.
సెట్ చేయని beresp.http.set-cookie;
}

# అవసరమైతే వస్తువులను పాతదిగా ఉండటానికి అనుమతించండి.
సెట్ beresp.grace = 6 క;
}

శక్తివంతమైన సాధనం

వార్నిష్ ఉపయోగించడం ప్రారంభించడంలో మీకు సహాయపడే కొన్ని ఉదాహరణలు ఇవి. ఈ సాధనం నిజంగా శక్తివంతమైనది మరియు ఎక్కువ హార్డ్‌వేర్ లేదా వర్చువల్ మిషన్లను కొనుగోలు చేయకుండా గొప్ప పనితీరును పెంచడంలో మీకు సహాయపడుతుంది. చాలా మంది వెబ్‌సైట్ నిర్వాహకులకు, ఇది నిజమైన ప్రయోజనం.