CDN και θωράκιση ακμών
CDN και θήκη άκρων
1) Στόχοι
Το CDN (δίκτυο παράδοσης περιεχομένου) μειώνει την καθυστέρηση και το φορτίο στην προέλευση: κρύπτες στατικό και υπό όρους δυναμικό περιεχόμενο σε κόμβους ακμών, παρέχει κλίμακα, σταθερότητα και ασφάλεια (DDoS/WAF), προσθέτει λογική ακμών (επαναγραφή απαντήσεων/αιτημάτων, επαλήθευση ταυτότητας, A/B).
2) Μοντέλο και κλειδιά κρυφής μνήμης
= 'scheme + host + path +? (επιλεγμένα params ερωτήσεων) + κεφαλίδες (Vary)'
Συνιστώμενη:- Κανονικοποιήστε την ερώτηση ('utm _' αποκλείουν, αφήστε' v ',' lang ',' country ', κλπ.).
- Ελαχιστοποίηση 'Vary' (για παράδειγμα, 'Vary: Accept-Encoding, Accept-Language'), αποφυγή 'Vary:'.
- Για API - κλειδί από τη διαδρομή + αναγνωριστικό έκδοσης (semver, hash, build id) + απαραίτητες ερωτήσεις/κεφαλίδες (για παράδειγμα, 'X-Tenant').
- Για εξατομικευμένες σελίδες - διαχωρισμός ακμών (από cookie/geo) ή Skip-Cache.
3) Πολιτικές και επικεφαλίδες του TTL
Βασικοί τίτλοι:- «Cache-Control: public, max-age = 300, s-maxage = 3600, stale-while-revalidate = 60, bale-if-error = 300»
- Ο «υποκατάστατος-έλεγχος» (εάν υποστηρίζεται) είναι μια ξεχωριστή πολιτική για CDN εκτός του περιηγητή.
- 'ETag '/' Last-Modified' - αιτήματα υπό όρους (304) και εξοικονόμηση κυκλοφορίας.
- Για ιδιώτες: «Cache-Control: private, no-store», εάν όχι cached.
- APIs που επιτρέπουν την κρύπτη: 'Cache-Control: public, s-maxage = 60' + version key.
Συνιστώμενη προσέγγιση: «αιώνιοι» πόροι (με δακτυλικά αποτυπώματα στο όνομα του αρχείου) → «μέγιστη ηλικία = 31536000, αμετάβλητοι». «σελίδες/JSON» → σύντομες TTL + SWR.
4) Αναπηρία: καθαρισμός/μαλακός καθαρισμός
Καθαρισμός με URL: pointwise.
Καθαρισμός με ετικέτα/κλειδί: ομαδικές εκκαθαρίσεις (χρησιμοποιήστε το «υποκατάστατο κλειδί: προϊόντα: 42 κατηγορία: τρόφιμα»).
Μαλακός καθαρισμός: σηματοδοτεί το περιεχόμενο «παρωχημένο», η άκρη δίνει μπαγιάτικο μέχρι να ληφθεί μια νέα έκδοση.
Προθέρμανση: μετά την ανάπτυξη, τραβήξτε τις κύριες σελίδες από τις περιοχές.
5) Πρότυπα επιδόσεων ακμών
Stale-While-Revalidate: γρήγορη απάντηση με «ξεπερασμένο» αντίγραφο + ενημέρωση φόντου.
Prefetch των κρίσιμων πόρων (προφόρτωση, προεξοχή, dns-prefetch).
Συμπίεση: gzip/br (για κείμενο), zstd εάν υποστηρίζεται CDN.
(QUIC): πολλαπλοποίηση και λιγότερη καθυστέρηση.
Επανάληψη συνεδρίας TLS και συρραφή OCSP στην περίμετρο.
6) Εικόνες και βίντεο
Βελτιστοποίηση εικόνας στην άκρη: διαπραγμάτευση μεγέθους/μορφής ('Accept: image/avif, webp'), авто -WebP/AVIF, DPR- варианты.
Τεμπέλικο φορτίο и ανταποκρίνεται ('srcset', 'μεγέθη').
Βίντεο: HLS/DASH, κατακερματισμένο MP4, θωράκιση προέλευσης (κεντρική κρύπτη) για τη μείωση των καταιγίδων.
Υπηρεσίες επισκόπησης και υπογεγραμμένα URL για ιδιωτικές εικόνες.
7) Περιμετρική ασφάλεια
WAF: Κανόνες OWASP, δέσμευση χώρας/ASN, όρια επιτοκίων με κλειδί (IP + cookie + token).
DDoS: L3/4 scrubbing, L7 checkers, JS challenges/turnstile.
Υπογεγραμμένα URL/cookies για ιδιωτικούς πόρους (βίντεο/εκθέσεις): TTL + HMAC/EdDSA.
Γεωγραφική οριοθέτηση και συμμόρφωση (για παράδειγμα, απαγορεύοντας περιοχές).
8) Υπολογισμός άκρων (λογική στο άκρο)
Περιπτώσεις:- Εξατομίκευση χωρίς θραύση: τμήματα (A/B), γεω, γλώσσα στην άκρη, και το περιεχόμενο είναι κρυμμένο.
- Επαναγραφή απαντήσεων/τίτλων, ανακατευθύνσεις, διαχωρισμός AB.
- Επαλήθευση ταυτότητας βασισμένη σε δείγματα: επαλήθευση υπογραφής JWT, δεσμευτικό κλειδί.
- Κανάρι με cookie/%: μέρος της κίνησης στο νέο backend.
Παραδείγματα τεχνολογίας είναι οι Cloudflare Workers/ανθεκτικά αντικείμενα, Fastly Compute @ Edge, AWS Lambda @ Edge.
9) Πολυ-CDN και παγκόσμια περίμετρος
Λόγοι: κάλυψη, SLA, κόστος, περιφερειακοί περιορισμοί, απομόνωση συμβάντων.
GSLB/Σύστημα διεύθυνσης της κυκλοφορίας: σε geo/καθυστέρηση/πραγματικά σφάλματα· υγειονομικοί έλεγχοι από πολλαπλά σημεία πλεονεκτήματος.
Σύστημα μονού κλειδιού/κεφαλίδας (Sunrogate-Key), συγχρονισμένοι κανόνες εκκαθάρισης.
Η ασπίδα προέλευσης είναι κοινή για όλα τα CDN ώστε να μην «χτυπήσει» την προέλευση με αναπηρίες.
10) Καταγραφή και μετρήσεις
Συλλογή:- Λόγος hit (cache, CDN → άκρο/προέλευση), λόγος byte hit.
- Latency p50/p95/p99, ρυθμός σφάλματος ανά κωδικό/διαδρομή.
- Προέλευση: RPS/ψηφιολέξεις/σφάλματα (προστασία από περιττές αστοχίες).
- Περιφερειακά διαγράμματα (ανά POP/ASN/χώρα).
- Ενοποίηση με παρατηρησιμότητα: Προμηθέας (έλξη μέσω εξαγωγέων), Grafana/Otel (ώθηση από κορμούς ακμών).
11) SEO и SPA/SSR
Οι σελίδες SEO με SWR και σύντομες TTL είναι γρήγορες και φρέσκες.
Sitemap/ρομπότ - κρύπτουμε για μεγάλο χρονικό διάστημα, αλλά επιτρέπουμε την απαλή εκκαθάριση.
Εργαζόμενος στην υπηρεσία: αποθήκευση εκτός σύνδεσης, προκατασκευή κρίσιμων διαδρομών, στοχευμένες επικαιροποιήσεις.
12) Σχηματισμοί και κεφαλίδες δειγμάτων
12. 1 Προφίλ ελέγχου κρυφής μνήμης
Στατικό με δακτυλικό αποτύπωμα:
Cache-Control: public, max-age=31536000, immutable
HTML/SSR:
Cache-Control: public, max-age=60, s-maxage=600, stale-while-revalidate=60, stale-if-error=600
Surrogate-Control: max-age=600, stale-while-revalidate=120
API (cached storefront):
Cache-Control: public, s-maxage=60
Vary: Accept-Encoding
12. 2 NGINX (προέλευση) - κανονικοποίηση ερωτημάτων/κεφαλίδων
nginx map $arg_utm_source $utm_skip { default 1; "" 0; }
map $args $normalized_args {
default "";
"~(^ &)v=([a-z0-9]+)(& $)" "v=$2";
}
proxy_cache_key "$scheme://$host$request_uri?$normalized_args";
add_header Surrogate-Key "product:{{id}} category:{{cat}}";
12. 3 Ταχέως VCL - μαλακός καθαρισμός και κλειδιά
vcl sub vcl_recv {
set req. hash += req. http. host req. url. path;
set req. hash += querystring. decode(req. url, "v,lang");
if (req. method == "PURGE") {
if (req. http. Fastly-Soft-Purge) { softpurge; } else { purge; }
return (synth(200, "purged"));
}
}
sub vcl_deliver {
set resp. http. Surrogate-Key = "product:42 category:food";
}
12. 4 Εργαζόμενοι σε Cloudflare - Υπογεγραμμένα URL
js export default {
async fetch(req, env) {
const url = new URL(req. url);
if (url. pathname. startsWith("/private/")) {
const token = url. searchParams. get("token");
if (!token! verify(token, env. SIGNING_KEY)) return new Response("Forbidden", { status: 403 });
}
return fetch(req);
}
}
12. 5 Lambda @ Edge - Επιλογές Geo
js exports. handler = async (event) => {
const req = event. Records[0].cf. request;
const country = req. headers['cloudfront-viewer-country']?.[0]?.value 'US';
if (country === 'DE') req. headers['accept-language'] = [{ key:'Accept-Language', value:'de' }];
return req;
};
13) Ιδιωτικά δεδομένα και API
Ποτέ μην αποκρύπτετε ιδιωτικές απαντήσεις χωρίς απομόνωση κλειδιού (ανά χρήστη/ανά μάρκα).
Χρησιμοποιήστε υπογεγραμμένα cookies/κεφαλίδες και 'Vary: Εξουσιοδότηση' only με αυστηρό έλεγχο (αλλιώς - cache-bust).
Ασφαλής εναλλακτική λύση: διαχωρισμός του δημόσιου στρώματος (σε κλωβούς) και των ιδιωτικών καταχωρίσεων (σύνθεση ESI/ακμής).
14) Κανόνες γεωγραφικού περιεχομένου
Περιορισμοί αδειοδότησης: γεωγραφική άρνηση στην ακμή, κάτοχοι θέσεων αντί να εμποδίζουν την προέλευση.
Πινακίδες ηλικίας/κανονιστικών ρυθμίσεων - τοποθετούνται στην άκρη (μην τρυπάτε την κρύπτη).
15) Αντι-μοτίβα
'no-cache, no-store' for whole the site → loss of CDN effect.
Το 'Vary' on ασταθείς κεφαλίδες (για παράδειγμα, 'User-Agent') → πληθικότητα.
Καθαρίστε ολόκληρη την κρύπτη σε κάθε απελευθέρωση.
Σύντομες TTL χωρίς SWR → καταιγίδα στην προέλευση.
Οι προσωπικές σελίδες είναι κλεισμένες χωρίς κλειδιά διαχωρισμού/μάρκας.
Έλλειψη θωράκισης προέλευσης → πολλαπλές παράλληλες αστοχίες.
16) Κατάλογος ελέγχου εφαρμογής (0-45 ημέρες)
0- 10 ηµέρες
Κατηγοριοποίηση πόρων: αμετάβλητο/HTML/API.
Ενεργοποίηση gzip/br, HTTP/2/3, κανονικοποίηση ερωτημάτων, 'Υποκατάστατο-κλειδί'.
Εισάγετε SWR/IFE και καθαρισμό βάσης.
11-25 ημέρες
Βελτιστοποίηση ακμής-εικόνας (αλλαγή μεγέθους/μορφής), θωράκιση προέλευσης.
Υπογεγραμμένα URL για ιδιωτικά μέσα ενημέρωσης, προφίλ WAF/DDoS.
Dashboards: hit ratio, origin fetches, p95 by POP.
26-45 ημέρες
Στρατηγική πολλαπλών CDN ή GSLB, βάρος καναρινιού στην περίμετρο.
Υπολογισμός άκρων για διαχωρισμό/AB/geo, απαλή εκκαθάριση ανά κλειδιά.
Ολοκλήρωση αυτόματης θέρμανσης και καθαρισμού σε CI/CD.
17) Μετρήσεις διάρκειας
Λόγος επιτυχίας Byte ≥ 85% για στατική, ≥ 60% για δυναμική HTML/δυναμική υπό όρους.
Προέλευση RPS σταθερή στις κορυφές (δεν υπάρχουν «καταιγίδες»).
p95 Η TTFB μειώθηκε κατά ≥ 30% μεταξύ των μεγάλων περιφερειών.
% μπαγιάτικων απαντήσεων για περιστατικά> 90% (μόλις παρατηρήθηκε στον χρήστη).
Πλήρης αυτοματοποίηση των κλειδιών εκκαθάρισης στους αγωγούς απελευθέρωσης.
18) Συμπέρασμα
Το αποτελεσματικό κύκλωμα CDN είναι τα κλειδιά/TTL/επιλογές, η πειθαρχία αναπηρίας και η λογική άκρων. Προσθήκη SWR/IFE, θωράκιση προέλευσης, βελτιστοποίηση μέσων και ισχυρή ασφάλεια (WAF, υπογεγραμμένα URL). Τυποποιήστε τις μετρήσεις και ενσωματώστε την εκκαθάριση σε CI/CD - και παίρνετε μια γρήγορη, οικονομική και σταθερή περίμετρο, έτοιμη για φορτία αιχμής και μαύρους κύκνους.