ఇటీవలి సంవత్సరాలలో, మరిన్ని ఫ్రంట్-ఎండ్ ఆప్టిమైజేషన్ ప్లాట్ఫారమ్లు థర్డ్-పార్టీ వనరులను సెల్ఫ్-హోస్టింగ్ లేదా ప్రాక్సీయింగ్ కోసం ఎంపికలను అందిస్తున్నాయి. Akamai మిమ్మల్ని సెట్ చేయడానికి అనుమతిస్తుంది. స్వీయ-ఉత్పత్తి URLల కోసం. క్లౌడ్ఫ్లేర్లో ఎడ్జ్ వర్కర్స్ టెక్నాలజీ ఉంది. ఫాస్టర్జైన్ చేయగలదు పేజీలలోని URLలు, సైట్ యొక్క ప్రధాన డొమైన్లో ఉన్న మూడవ పక్ష వనరులను సూచించే విధంగా ఉంటాయి.
మీ ప్రాజెక్ట్లో ఉపయోగించే థర్డ్-పార్టీ సేవలు తరచుగా మారవని మరియు క్లయింట్లకు వాటి డెలివరీని మెరుగుపరచవచ్చని మీకు తెలిస్తే, మీరు బహుశా ఈ సేవలను ప్రాక్సీ చేయడం గురించి ఆలోచిస్తూ ఉంటారు. ఈ విధానం ఈ వనరులను మీ వినియోగదారులకు మరింత చేరువ చేయడానికి మరియు వాటి క్లయింట్-సైడ్ క్యాషింగ్పై అధిక నియంత్రణను పొందడానికి మిమ్మల్ని అనుమతిస్తుంది. ఇది థర్డ్-పార్టీ సేవల క్రాష్లు లేదా పనితీరు క్షీణత వలన కలిగే సమస్యల నుండి వినియోగదారులను కూడా రక్షిస్తుంది.
మంచిది: ఉత్పాదకత పెరిగింది
థర్డ్-పార్టీ వనరులను సెల్ఫ్-హోస్టింగ్ చేయడం పనితీరును చాలా స్పష్టంగా మెరుగుపరుస్తుంది. బ్రౌజర్ అనవసరమైన DNS అభ్యర్థనలు చేయడం, TCP కనెక్షన్ను ఏర్పాటు చేయడం లేదా థర్డ్-పార్టీ డొమైన్తో TLS హ్యాండ్షేక్ చేయడం వంటివి చేయాల్సిన అవసరం ఉండదు. పనితీరుపై థర్డ్-పార్టీ వనరులను సెల్ఫ్-హోస్టింగ్ చేయడం వల్ల కలిగే ప్రభావాన్ని కింది రెండు చిత్రాలను పోల్చడం ద్వారా చూడవచ్చు.

మూడవ పక్ష వనరులు బాహ్య మూలాల నుండి లోడ్ చేయబడతాయి (తీసుకోబడ్డాయి )

మూడవ పక్ష వనరులు సైట్లోని మిగిలిన మెటీరియల్స్ ఉన్న చోటే నిల్వ చేయబడతాయి (తీసుకోబడినవి )
ప్రధాన డొమైన్తో ఇప్పటికే ఏర్పడిన HTTP/2 కనెక్షన్ యొక్క మల్టీప్లెక్సింగ్ మరియు డేటా ప్రాధాన్యత సామర్థ్యాలను బ్రౌజర్ ఉపయోగించుకుంటుంది అనే వాస్తవం వల్ల పరిస్థితి మరింత మెరుగుపడుతుంది.
మీరు థర్డ్-పార్టీ రిసోర్స్లను హోస్ట్ చేయకపోతే, అవి ప్రాథమిక డొమైన్ కాకుండా వేరొక డొమైన్ నుండి లోడ్ అవుతాయి కాబట్టి, వాటికి ప్రాధాన్యత ఇవ్వడం సాధ్యపడదు. దీని ఫలితంగా, అవి క్లయింట్ యొక్క బ్యాండ్విడ్త్ కోసం ఒకదానితో ఒకటి పోటీ పడతాయి. ఇది, ఆదర్శవంతమైన పరిస్థితులలో సాధ్యమయ్యే దానికంటే, పేజీకి కీలకమైన మెటీరియల్స్ లోడ్ అవ్వడానికి గణనీయంగా ఎక్కువ సమయం పట్టడానికి దారితీయవచ్చు. HTTP/2 ప్రాధాన్యత గురించి అన్నింటినీ చాలా చక్కగా వివరించే ఒక ప్రసంగం.
బాహ్య వనరులకు లింకులలో అట్రిబ్యూట్ల వాడకం అని భావించవచ్చు preconnect ఇది సమస్యను పరిష్కరించడంలో సహాయపడుతుంది. అయితే, వేర్వేరు డొమైన్లకు ఇలాంటి లింకులు మరీ ఎక్కువగా ఉంటే, అత్యంత కీలకమైన సమయంలో అది కమ్యూనికేషన్ లైన్పై అధిక భారాన్ని మోపగలదు.
థర్డ్-పార్టీ వనరులను మీరే హోస్ట్ చేయడం ద్వారా, ఈ వనరులు క్లయింట్కు ఖచ్చితంగా ఎలా అందించబడతాయో మీరు నియంత్రించవచ్చు. ప్రత్యేకంగా, ఇందులో ఈ క్రిందివి ఉంటాయి:
- ప్రతి బ్రౌజర్కు అత్యంత అనువైన డేటా కంప్రెషన్ అల్గోరిథం (బ్రోట్లీ/జిజిప్) ఉపయోగించబడుతుందని నిర్ధారించుకోవడం సాధ్యమవుతుంది.
- మీరు వనరుల కాషింగ్ సమయాన్ని పెంచుకోవచ్చు, ఇది సాధారణంగా చాలా ఎక్కువ సమయం పట్టదు, అత్యంత ప్రసిద్ధ ప్రొవైడర్లతో కూడా (ఉదాహరణకు, GA ట్యాగ్ కోసం సంబంధిత విలువ 30 నిమిషాలకు సెట్ చేయబడింది).
మీరు మీ క్యాషింగ్ నిర్వహణ వ్యూహంలో సంబంధిత అంశాలను (URL హాష్లు, వెర్షనింగ్ మొదలైనవి) చేర్చడం ద్వారా, ఒక రిసోర్స్ యొక్క TTLను ఉదాహరణకు ఒక సంవత్సరానికి కూడా పొడిగించవచ్చు. దీని గురించి మనం కింద చర్చిస్తాము.
▍మూడవ పక్ష సేవల కార్యకలాపాలలో అంతరాయాలు లేదా వాటి నిలిపివేత నుండి రక్షణ
థర్డ్-పార్టీ వనరులను మనమే హోస్ట్ చేసుకోవడంలో ఉన్న మరో ఆసక్తికరమైన అంశం ఏమిటంటే, ఇది థర్డ్-పార్టీ సేవల అంతరాయాలతో ముడిపడి ఉన్న నష్టాలను తగ్గించుకోవడానికి మిమ్మల్ని అనుమతిస్తుంది. ఉదాహరణకు, మీరు ఉపయోగించే థర్డ్-పార్టీ A/B టెస్టింగ్ సొల్యూషన్, పేజీ యొక్క హెడర్ విభాగంలో లోడ్ చేయబడిన ఒక బ్లాకింగ్ స్క్రిప్ట్గా అమలు చేయబడిందని అనుకుందాం. ఈ స్క్రిప్ట్ నెమ్మదిగా లోడ్ అవుతుంది. దానికి సంబంధించిన స్క్రిప్ట్ లోడ్ అవ్వడంలో విఫలమైతే, పేజీ ఖాళీగా కనిపిస్తుంది. అది లోడ్ అవ్వడానికి చాలా ఎక్కువ సమయం తీసుకుంటే, పేజీ గణనీయమైన ఆలస్యంతో కనిపిస్తుంది. లేదా, మీ ప్రాజెక్ట్ ఒక థర్డ్-పార్టీ CDN వనరు నుండి లోడ్ చేయబడిన లైబ్రరీని ఉపయోగిస్తుందని అనుకుందాం. ఈ వనరులో అంతరాయం ఏర్పడిందని లేదా ఒక నిర్దిష్ట దేశంలో అది బ్లాక్ చేయబడిందని ఊహించుకోండి. అటువంటి పరిస్థితి సైట్ యొక్క కార్యాచరణకు అంతరాయం కలిగిస్తుంది.
బాహ్య సేవ అందుబాటులో లేనప్పుడు మీ సైట్ ఎలా పనిచేస్తుందో తెలుసుకోవడానికి, మీరు SPOF విభాగాన్ని ఉపయోగించవచ్చు. .

webpagetest.org లోని SPOF విభాగం
▍బ్రౌజర్ క్యాషింగ్ సమస్యల సంగతేంటి? (సూచన: అదొక అపోహ)
ఈ సేవలకు అధిక-నాణ్యత గల నెట్వర్క్లు ఉండటం మరియు అవి ప్రపంచవ్యాప్తంగా విస్తరించి ఉండటం వలన, పబ్లిక్ CDNలను ఉపయోగించడం వల్ల వనరుల పనితీరు దానంతట అదే మెరుగుపడుతుందని మీరు అనుకోవచ్చు. కానీ వాస్తవానికి, విషయాలు కొంచెం సంక్లిష్టంగా ఉంటాయి.
మనకు website1.com, website2.com, website3.com వంటి అనేక వేర్వేరు వెబ్సైట్లు ఉన్నాయని అనుకుందాం. ఈ వెబ్సైట్లన్నీ jQuery లైబ్రరీని ఉపయోగిస్తాయి. ఉదాహరణకు, googleapis.com వంటి ఒక CDNని ఉపయోగించి మనం దానిని వాటికి కనెక్ట్ చేస్తాము. బ్రౌజర్ ఒకసారి లైబ్రరీని డౌన్లోడ్ చేసి, కాష్ చేసి, ఆపై మూడు వెబ్సైట్లతో పనిచేసేటప్పుడు దానిని ఉపయోగిస్తుందని మనం ఆశించవచ్చు. ఇది నెట్వర్క్ లోడ్ను తగ్గించగలదు. బహుశా ఇది ఆదాకు అనుమతించి, వనరుల పనితీరును మెరుగుపరచడంలో సహాయపడుతుంది. అయితే, ఆచరణాత్మక దృక్కోణం నుండి చూస్తే, విషయాలు భిన్నంగా ఉంటాయి. ఉదాహరణకు, Safari ఒక ఫీచర్ను అమలు చేస్తుంది, దానిని అంటారు. కాష్ డాక్యుమెంట్ సోర్స్ మరియు థర్డ్-పార్టీ రిసోర్స్ సోర్స్ ఆధారంగా డ్యూయల్ కీలను ఉపయోగిస్తుంది. ఈ అంశంపై మంచి వ్యాసం.
పాత చదువులు и అలాగే ఇటీవలివి పాల్ కల్వానో పరిశోధనల ప్రకారం, మనం ఊహించినంత కాలం బ్రౌజర్ కాష్లలో వనరులు నిల్వ చేయబడవు: "ఒక ప్రాజెక్ట్ యొక్క సొంత మరియు థర్డ్-పార్టీ వనరుల కాషింగ్ సమయాల మధ్య గణనీయమైన వ్యత్యాసం ఉంది. ఇది CSS మరియు వెబ్ ఫాంట్లకు వర్తిస్తుంది. ప్రత్యేకంగా, 95% నేటివ్ ఫాంట్ల కాషింగ్ సమయం ఒక వారం కంటే ఎక్కువగా ఉండగా, 50% థర్డ్-పార్టీ ఫాంట్ల కాషింగ్ సమయం ఒక వారం కంటే తక్కువగా ఉంది! ఇది వెబ్ డెవలపర్లకు వారి సొంత ఫాంట్ ఫైల్లను హోస్ట్ చేయడానికి బలమైన కారణాన్ని ఇస్తుంది!"
ఫలితంగా, మీరు ఇతరుల కంటెంట్ను హోస్ట్ చేస్తే, బ్రౌజర్ క్యాషింగ్ వల్ల కలిగే పనితీరు సమస్యలను మీరు గమనించరు.
థర్డ్-పార్టీ వనరులను మనమే హోస్ట్ చేసుకోవడం వల్ల కలిగే ప్రయోజనాల గురించి ఇప్పుడు మనం తెలుసుకున్నాం కాబట్టి, ఈ విధానాన్ని సరిగ్గా అమలు చేసిన దానికీ, తప్పుగా అమలు చేసిన దానికీ మధ్య తేడాను ఎలా గుర్తించాలో చర్చిద్దాం.
చెడ్డది: అసలు సమస్య వివరాలలోనే ఉంది
అటువంటి వనరులు సరిగ్గా కాష్ చేయబడ్డాయని నిర్ధారించుకోకుండా, థర్డ్-పార్టీ వనరులను మీ స్వంత డొమైన్కు తరలించడం స్వయంచాలకంగా జరగదు.
ఇక్కడ ఉన్న ప్రధాన సమస్యలలో ఒకటి కాషింగ్ సమయం. ఉదాహరణకు, వెర్షన్ సమాచారం థర్డ్-పార్టీ స్క్రిప్ట్ పేర్లలో ఈ విధంగా చేర్చబడుతుంది: jquery-3.4.1.jsఈ ఫైల్ భవిష్యత్తులో మారదు, అందువల్ల దీని క్యాషింగ్లో ఎలాంటి సమస్యలు తలెత్తవు.
అయితే, ఫైళ్లతో పనిచేసేటప్పుడు వెర్షనింగ్ స్కీమ్ను అమలు చేయకపోతే, ఫైల్ పేరు మారకుండా దానిలోని కంటెంట్ మారే కాష్డ్ స్క్రిప్ట్లు పాతబడిపోవచ్చు. ఇది ఒక తీవ్రమైన సమస్య కావచ్చు, ఎందుకంటే ఇది, ఉదాహరణకు, క్లయింట్లకు వీలైనంత త్వరగా అందాల్సిన ఆటోమేటిక్ సెక్యూరిటీ ప్యాచ్లను స్క్రిప్ట్లకు వర్తింపజేయకుండా నిరోధిస్తుంది. డెవలపర్ కాష్లోని అటువంటి స్క్రిప్ట్లను అప్డేట్ చేసే ప్రక్రియను వేగవంతం చేయాల్సి ఉంటుంది. అంతేకాకుండా, సర్వర్-సైడ్ ప్రాజెక్ట్ కోసం రూపొందించిన కోడ్ యొక్క తాజా వెర్షన్కు, కాష్ నుండి క్లయింట్లో ఉపయోగించే కోడ్కు తేడా ఉండటం వల్ల ఇది అప్లికేషన్ వైఫల్యాలకు కారణం కావచ్చు.
అయితే, తరచుగా అప్డేట్ చేయబడే కంటెంట్ (ట్యాగ్ మేనేజర్లు, A/B టెస్టింగ్ సొల్యూషన్లు) విషయానికి వస్తే, దానిని CDN ద్వారా కాష్ చేయడం అసాధ్యం కాకపోయినా, చాలా క్లిష్టమైనది. కమాండర్స్ యాక్ట్ వంటి ట్యాగ్ మేనేజ్మెంట్ సొల్యూషన్లు, కొత్త వెర్షన్లను పబ్లిష్ చేసేటప్పుడు వెబ్హుక్లను ఉపయోగిస్తాయి. ఇది CDNలో కాష్ రీసెట్కు, లేదా ఇంకా ఉత్తమంగా, హ్యాష్ లేదా URL వెర్షన్ అప్డేట్ను ట్రిగ్గర్ చేసే సామర్థ్యానికి వీలు కల్పిస్తుంది.
▍క్లయింట్లకు మెటీరియల్స్ను అనుకూలమైన పద్ధతిలో అందించడం
అంతేకాకుండా, క్యాషింగ్ గురించి చర్చిస్తున్నప్పుడు, CDNలు ఉపయోగించే క్యాషింగ్ సెట్టింగ్లు కొన్ని థర్డ్-పార్టీ వనరులకు సరిపోకపోవచ్చని పరిగణనలోకి తీసుకోవడం ముఖ్యం. ఉదాహరణకు, అటువంటి వనరులు కంటెంట్ యొక్క బ్రౌజర్-ఆప్టిమైజ్డ్ వెర్షన్లను అందించడానికి యూజర్ ఏజెంట్ స్నిఫింగ్ (లేదా అడాప్టివ్ సర్వింగ్)ను ఉపయోగించవచ్చు. ఈ టెక్నాలజీలు బ్రౌజర్ సామర్థ్యాలను నిర్ధారించడానికి రెగ్యులర్ ఎక్స్ప్రెషన్లు లేదా HTTP హెడర్ సమాచారం యొక్క డేటాబేస్పై ఆధారపడతాయి. User-Agentవారు ఏ బ్రౌజర్తో వ్యవహరిస్తున్నారో తెలుసుకున్న తర్వాత, దానికి అనువుగా రూపొందించిన కంటెంట్ను అందిస్తారు.
ఇక్కడ మనం రెండు సేవలను గుర్తుకు తెచ్చుకోవచ్చు. మొదటిది googlefonts.com. రెండవది polyfill.io. గూగుల్ ఫాంట్స్ సేవ, ఒక నిర్దిష్ట వనరు కోసం, బ్రౌజర్ సామర్థ్యాలను బట్టి విభిన్నమైన CSS కోడ్ను అందిస్తుంది (woff2 వనరులకు లింక్లను అందించడం ద్వారా). unicode-range).
వివిధ బ్రౌజర్ల నుండి అమలు చేసిన రెండు గూగుల్ ఫాంట్స్ ప్రశ్నల ఫలితాలు ఇక్కడ ఉన్నాయి.

Chrome నుండి Google Fonts అభ్యర్థన యొక్క ఫలితం

IE10 నుండి Google ఫాంట్ల శోధన ఫలితం
Polyfill.io బ్రౌజర్కు అవసరమైన పాలిఫిల్లను మాత్రమే అందిస్తుంది. పనితీరు కారణాల వల్ల ఇలా చేస్తారు.
ఉదాహరణకు, మనం ఈ క్రింది క్వెరీని వేర్వేరు బ్రౌజర్ల నుండి అమలు చేస్తే ఏమి జరుగుతుందో చూద్దాం:
IE10 నుండి చేసిన అటువంటి అభ్యర్థనకు ప్రతిస్పందనగా 34 KB డేటా వస్తుంది. Chrome నుండి వచ్చే ప్రతిస్పందన ఖాళీగా ఉంటుంది.
చెడు: కొన్ని గోప్యతా పరిగణనలు
ఈ విషయం చివరిది, కానీ తక్కువ ప్రాముఖ్యత లేనిది. విషయం ఏమిటంటే, ఒక ప్రాజెక్ట్ యొక్క ప్రధాన డొమైన్ లేదా సబ్-డొమైన్లో థర్డ్-పార్టీ వనరులను హోస్ట్ చేయడం వలన వినియోగదారు గోప్యతకు భంగం కలగవచ్చు మరియు ప్రధాన వెబ్ ప్రాజెక్ట్పై ప్రతికూల ప్రభావం పడవచ్చు.
మీ CDN సిస్టమ్ సరిగ్గా కాన్ఫిగర్ చేయకపోతే, మీరు మీ డొమైన్ యొక్క కుకీలను ఒక థర్డ్-పార్టీ సేవకు పంపే అవకాశం ఉంది. CDN స్థాయిలో సరైన ఫిల్టరింగ్ అమలు చేయకపోతే, మీ సెషన్ కుకీలు, సాధారణంగా జావాస్క్రిప్ట్లో (అట్రిబ్యూట్తో) ఉపయోగించబడవు. httponly), మూడవ పక్ష హోస్ట్కు పంపబడవచ్చు.
యూలేరియన్ లేదా క్రిటియో వంటి ట్రాకర్లతో కచ్చితంగా ఇదే జరగవచ్చు. థర్డ్-పార్టీ ట్రాకర్లు కుకీలలో ఒక ప్రత్యేకమైన ఐడెంటిఫైయర్ను ఇన్స్టాల్ చేయగలవు. ఒకవేళ అవి వెబ్సైట్ కంటెంట్లో పొందుపరచబడి ఉంటే, వినియోగదారుడు వివిధ వెబ్ వనరులలో నావిగేట్ చేస్తున్నప్పుడు అవి తమ ఇష్టానుసారం ఆ ఐడెంటిఫైయర్ను చదవగలవు.
ఈ రోజుల్లో, చాలా బ్రౌజర్లు ఈ రకమైన ట్రాకర్ ప్రవర్తన నుండి రక్షణను కల్పిస్తున్నాయి. ఫలితంగా, ట్రాకర్లు ఇప్పుడు సాంకేతికతను ఉపయోగిస్తున్నాయి. వివిధ ప్రాజెక్ట్ల కోసం వారి స్వంత స్క్రిప్ట్ల రూపంలో మారువేషంలో ఉంటాయి. ప్రత్యేకంగా, ట్రాకర్లు వెబ్సైట్ యజమానులను ఒక నిర్దిష్ట డొమైన్ కోసం వారి సెట్టింగ్లకు CNAMEను జోడించమని అడుగుతాయి, దీని చిరునామా సాధారణంగా యాదృచ్ఛిక అక్షరాల స్ట్రింగ్గా కనిపిస్తుంది.
వెబ్సైట్ కుకీలను అన్ని సబ్డొమైన్లకు (ఉదా., *.website.com) అందుబాటులో ఉంచడం మంచిది కానప్పటికీ, చాలా వెబ్సైట్లు అలా చేస్తాయి. ఈ సందర్భంలో, అటువంటి కుకీలు ఒక మారువేషంలో ఉన్న థర్డ్-పార్టీ ట్రాకర్కు ఆటోమేటిక్గా పంపబడతాయి. ఫలితంగా, ఇక గోప్యత అనేదే ఉండదు.
అలాగే, HTTP హెడర్ల విషయంలో కూడా ఇదే జరుగుతుంది. వీటిని ప్రధాన డొమైన్కు మాత్రమే పంపుతారు, ఎందుకంటే వీటిని సృష్టించడానికి ఉపయోగించవచ్చు వినియోగదారు. దయచేసి మీరు ఉపయోగించే CDN సేవ అటువంటి హెడర్లను సరిగ్గా ఫిల్టర్ చేస్తుందని నిర్ధారించుకోండి.
ఫలితాలు
మీరు త్వరలో థర్డ్-పార్టీ వనరుల స్వతంత్ర హోస్టింగ్ను అమలు చేయాలని ప్లాన్ చేస్తుంటే, నేను మీకు కొన్ని సలహాలు ఇస్తాను:
- మీ అత్యంత ముఖ్యమైన JS లైబ్రరీలు, ఫాంట్లు మరియు CSS ఫైల్లను హోస్ట్ చేయండి. దీనివల్ల, థర్డ్-పార్టీ సేవ కారణంగా సైట్ కార్యకలాపాలకు కీలకమైన వనరు అందుబాటులో లేకపోవడం వల్ల వెబ్సైట్ డౌన్టైమ్ లేదా పనితీరు క్షీణత ప్రమాదాన్ని తగ్గించవచ్చు.
- CDNలో థర్డ్-పార్టీ అసెట్లను కాష్ చేసే ముందు, వాటి ఫైల్ పేర్లు ఏదైనా వెర్షనింగ్ సిస్టమ్ను ఉపయోగిస్తున్నాయని నిర్ధారించుకోండి, లేదా స్క్రిప్ట్ యొక్క కొత్త వెర్షన్ ప్రచురించబడినప్పుడు CDN కాష్ను మాన్యువల్గా లేదా ఆటోమేటిక్గా రీసెట్ చేయడం ద్వారా మీరు ఈ అసెట్ల లైఫ్సైకిల్ను నిర్వహించగలరని నిర్ధారించుకోండి.
- మీ CDN, ప్రాక్సీ మరియు కాష్ సెట్టింగ్ల విషయంలో చాలా జాగ్రత్తగా ఉండండి. ఇది మీ ప్రాజెక్ట్ యొక్క కుకీలు లేదా హెడర్లు పంపబడకుండా నిరోధిస్తుంది.
Client-Hintsతృతీయ పక్ష సేవలు.
ప్రియమైన పాఠకులారా! మీ ప్రాజెక్ట్ల నిర్వహణకు కీలకమైన ఇతరుల మెటీరియల్లను మీరు మీ సర్వర్లలో హోస్ట్ చేస్తున్నారా?
మూలం: www.habr.com
