تخزين مؤقت للتحقق من الرموز على نطاق واسع
تعلّم كيفية تقليل كلفة التحقق من JWT عند ارتفاع حركة المرور، من خلال تخزين مفاتيح JWKS ونتائج التحقق مؤقتًا دون التضحية بالأمان
تخزين مؤقت للتحقق من الرموز على نطاق واسع درس مجاني في Spring Security 6 & JWT Authentication على CoddyKit. هذا هو الدرس 4 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Spring Security 6 & JWT Authentication، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Spring Security 6 & JWT Authentication 4 دروس في المجموع.
بعض أجزاء هذا الدرس لم تُترجم بعد وتظهر باللغة الإنجليزية.
The Cost of Validation
Every request to a JWT-protected API runs signature verification and claim checks. At thousands of requests per second, repeated work, especially fetching public keys, becomes a bottleneck.
What Is Safe to Cache
Not everything should be cached. Safe to cache:
- The public keys (JWKS) used to verify signatures
- Expensive parsed metadata
Risky: caching a final allow decision for too long can let a revoked token slip through.
Caching the JWKS
Fetching the JWKS endpoint on every request is wasteful. Cache the key set and refresh it periodically or when an unknown kid appears.
// pseudo: refresh keys at most once per 10 minutes
if (now - keysFetchedAt > 600000) {
keys = fetchJwks();
keysFetchedAt = now;
}Refresh on Unknown kid
If a token carries a kid not in the cache, the signing key may have rotated. Force a one-time refresh before rejecting, so legitimate new tokens are accepted promptly.
let key = keys[kid];
if (!key) { keys = fetchJwks(); key = keys[kid]; }
if (!key) reject('unknown key');Local Verification Beats Introspection
Self-contained JWTs can be verified locally with the cached public key, avoiding a network call per request. This is far faster than remote token introspection.
Short-Lived Decision Cache
You may cache the parsed claims for a token's lifetime keyed by the token hash, but the cache entry's TTL must never exceed the token's own exp.
ttl = Math.min(claims.exp - now, MAX_CACHE_TTL);
cache.set(hash(token), claims, ttl);The Revocation Tradeoff
Caching a decision means a revoked token might still be accepted until the cache entry expires. Keep this TTL short (seconds) when you support revocation, so the stale window stays tiny.
Spring's Built-In JWKS Cache
Spring's NimbusJwtDecoder already caches the JWKS internally and handles refresh, so for many apps you get caching for free just by configuring the JWK set URI.
JwtDecoder decoder = NimbusJwtDecoder
.withJwkSetUri(jwksUri)
.build();Measuring the Win
Always measure before and after. Track average validation latency and JWKS fetch count. Caching that does not move your metrics adds complexity for no gain.
Cache Stampede Protection
When a cached key expires, many requests may refresh at once. Use a single-flight lock so only one thread fetches the new JWKS while others wait.
if (refreshing) await refreshPromise;
else { refreshing = true; refreshPromise = fetchJwks(); }Distributed Caches
In a multi-instance deployment, a shared cache like Redis avoids each node refetching keys independently and keeps a consistent view of revocation state.
Quick Check
Test your understanding of caching token validation.
Recap
You learned to scale JWT validation with caching:
- Cache the JWKS public keys; refresh on unknown kid
- Local verification avoids per-request network calls
- Decision caches must respect the token's exp and stay short when revocation matters
- Use single-flight refresh and distributed caches at scale
Smart caching cuts latency while keeping security intact.
الأسئلة الشائعة
هل درس «تخزين مؤقت للتحقق من الرموز على نطاق واسع» مجاني؟
نعم — نص درس «تخزين مؤقت للتحقق من الرموز على نطاق واسع» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Spring Security 6 & JWT Authentication، انتقل إلى CoddyKit PRO. تتضمن دورة Spring Security 6 & JWT Authentication 4 دروس في المجموع.
ماذا ستتعلم في «تخزين مؤقت للتحقق من الرموز على نطاق واسع»؟
تعلّم كيفية تقليل كلفة التحقق من JWT عند ارتفاع حركة المرور، من خلال تخزين مفاتيح JWKS ونتائج التحقق مؤقتًا دون التضحية بالأمان تتمرن على Spring Security 6 & JWT Authentication مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Spring Security 6 & JWT Authentication؟
لا تُشترط خبرة سابقة. Spring Security 6 & JWT Authentication على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 4 من أصل 4.
كم من الوقت يستغرق درس «تخزين مؤقت للتحقق من الرموز على نطاق واسع»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Spring Security 6 & JWT Authentication هذا؟
نعم. كل درس في Spring Security 6 & JWT Authentication يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- رموز JWT قصيرة الأجل ودورة التحديث
- القوائم السوداء والبيضاء لرموز JWT
- اعتبارات الأداء لرموز JWT
- تخزين مؤقت للتحقق من الرموز على نطاق واسع