डेवलपर टूल · Unix टाइमस्टैम्प कन्वर्टर
शिप करने से पहले कुकी या कैश समाप्ति अवधि की जाँच करना
· यह क्यों मायने रखती है
टाइम स्टाम्प्स डिबगिंग वेब-विकास
समाप्ति मूल्यों की गणना की जाती है, शायद ही कभी पढ़ा जाता है, और गलत तरीके से जो केवल बाद में दिखाई देते हैं। यह पोस्ट उन स्थानों को सूचीबद्ध करती है जहां पूर्ण युग प्रकट होते हैं (रेडिस, मेम्केच्ड, हस्ताक्षरित URL, कुकीज़) और दिखाता है कि उत्पादन तक पहुंचने से पहले किसी को कैसे सत्यापित किया जाए।
कैश जो तुरंत समाप्त हो गया - गलत इकाई में लिखी गई गणना समाप्ति और एक हिट दर जो शून्य पर गिर गई
तैनाती के तुरंत बाद कैश हिट दर में गिरावट गलत पैमाने पर गणना की गई समाप्ति से आ सकती है। जब कैश को तत्काल दशकों पहले प्राप्त होता है तो कैश सही ढंग से कार्य कर रहा होता है। मेमोरी ट्यूनिंग या निष्कासन से पहले, परिनियोजन पथ द्वारा भेजी गई सटीक संख्या का निरीक्षण करें।
इसकी तुलना परिनियोजन समय और इच्छित जीवनकाल से करें। ToolAcre सेकंड और मिलीसेकंड को स्पष्ट रूप से प्रस्तुत कर सकता है, जिससे 1,000 का बेमेल कारक दृश्यमान हो जाता है। परिणाम के बगल में कच्चा आदेश या कॉन्फ़िगरेशन रखें; इसकी गणना को ठीक किए बिना उत्पादन में मूल्य को मैन्युअल रूप से बदलना पुनरावृत्ति की गारंटी देता है।
जांचें कि क्या विफल प्रविष्टियाँ नई रिलीज़ के साथ बनाई गई थीं जबकि पुरानी प्रविष्टियाँ अभी भी हिट हैं। वह सहसंबंध समाप्ति गणना को असंबंधित निष्कासन दबाव से अलग कर सकता है।
जहां पूर्ण समाप्ति दिखाई देती है - रेडिस EXPIREAT बनाम PEXPIREAT, मेम्केच्ड का तीस-दिवसीय नियम, हस्ताक्षरित URL समाप्ति पैरामीटर और कुकी समाप्ति विशेषताएँ
कई प्रणालियों में पूर्ण समाप्ति दिखाई देती है, लेकिन उनकी इकाइयाँ और किनारे के नियम विनिमेय नहीं हैं। कार्यपुस्तिका में कई नामित उत्पाद सूचीबद्ध हैं; टाइमस्टैम्प रिपॉजिटरी उनके प्रोटोकॉल को लागू या दस्तावेज़ित नहीं करता है। युग लागू करने से पहले प्रत्येक कमांड, क्वेरी पैरामीटर या विशेषता को उसके आधिकारिक अनुबंध के साथ सत्यापित करें।
साझा निदान वैध रहता है: जो भेजा गया था उसे कैप्चर करें, पहचानें कि क्या यह एक पल का नाम देता है, इसकी इकाई बताएं और इसे परिवर्तित करें। किसी नियम को एक कैश कमांड से दूसरे में स्थानांतरित करने से बचें क्योंकि उनके नाम समान दिखते हैं। लक्ष्य API के लिए सही ढंग से परिवर्तित तिथि अभी भी अमान्य हो सकती है।
पूर्ण समाप्ति APआई अलग-अलग हैं; विशिष्ट स्टोर, URL हस्ताक्षरकर्ता या कुकी अनुबंध को सत्यापित करें
एक रिश्तेदार TTL उत्तर देता है "ऑपरेशन से कितनी देर होगी?" जबकि एक पूर्ण युग उत्तर देता है "किस क्षण पर?" वर्तमान समय में TTL जोड़ने से एक निरपेक्ष मान उत्पन्न होता है; मूल TTL को पूर्ण फ़ील्ड में भेजना इसे युग के निकट रखता है। किसी सापेक्ष फ़ील्ड में पूर्ण गणना भेजने से डेटा इच्छित से कहीं अधिक समय तक सुरक्षित रह सकता है।
उनके शब्दार्थ के लिए चर को नाम दें, जैसे `ttlSeconds` और `expiresAtMs`, और कॉल साइट पर कन्वर्ट करें जिसका अनुबंध ज्ञात है। परीक्षणों को संदर्भ घड़ी को स्थिर कर देना चाहिए ताकि अपेक्षित समाप्ति नियतात्मक हो। केवल यह कहने से बचें कि परिणाम अब से बेहतर है; यह बेतहाशा गलत जीवनकाल के साथ मूल्यों को पारित कर सकता है।
समय क्षेत्र समाप्ति में फंस जाता है - 'मध्यरात्रि' के लिए समाप्ति की गणना उपयोगकर्ता या UTC के बजाय सर्वर के क्षेत्र में की जाती है
"आधी रात को समाप्त होना" तब तक अधूरा है जब तक कि आधी रात के क्षेत्र का नाम नहीं दिया जाता। आधी रात UTC, सर्वर का स्थानीय समय और उपयोगकर्ता की स्थानीय आधी रात अलग-अलग क्षण और यहां तक कि अलग-अलग कैलेंडर तिथियां भी हो सकती हैं। ToolAcre का दिनांक-समय चयनकर्ता ज़ोन रहित दिनांक-समय को ब्राउज़र का स्थानीय समय मानता है और ऐसा कहता है।
बुनियादी ढांचे की समाप्ति के लिए, एक स्पष्ट UTC दिनांक-समय अक्सर पर्यावरणीय निर्भरता को हटा देता है। उपयोगकर्ता नीति के लिए, तत्काल समाधान करने से पहले शेड्यूलिंग परत में इच्छित नामित क्षेत्र को बनाए रखें। कन्वर्टर हल किए गए युग का निरीक्षण कर सकता है, लेकिन यह नहीं चुनता कि आवश्यकता किस मध्यरात्रि का मतलब है।
डिबगिंग के दौरान नीति वाक्यांश और हल किए गए इंस्टेंट को अलग-अलग संग्रहीत करें। इससे पता चलता है कि असहमति आवश्यकता की व्याख्या में शुरू हुई या बाद के युग के अंकगणित में।
"मिडनाइट" को समाप्ति क्षण बनने से पहले एक स्पष्ट व्याख्या की आवश्यकता है
`2025-02-03T10:30:00Z` पर एक रिलीज़ की कल्पना करें जो ठीक एक दिन बाद समाप्त होनी चाहिए। अपेक्षित निरपेक्ष मान 1,738,668,600 सेकंड या 1,738,668,600,000 मिलीसेकंड है, जिससे `2025-02-04T10:30:00.000Z` प्राप्त होता है। स्क्रिप्ट के आउटपुट को उसकी घोषित इकाई के अंतर्गत बदलें और तुलना करें।
पूर्ण-सेकंड फ़ील्ड में 86,400 का मान 1970-01-02 के रूप में प्रस्तुत किया जाएगा, जिससे पता चलेगा कि रिलीज़ इंस्टेंट को जोड़े बिना एक अवधि भेजी गई थी। 1,000 से दो बार गुणा किया गया मान दिनांक सीमा से बाहर हो सकता है। दोनों विफलताएँ सामान्य "कैश मिस्ड" मीट्रिक की तुलना में अधिक जानकारीपूर्ण हैं।
दिन भर के डेल्टा को सीधे 86,400 सेकंड के रूप में दर्शाया जा सकता है। यह अवधि जांच स्थिर रहती है, भले ही समीक्षक का स्थानीय प्रतिपादन UTC परिनियोजन शेड्यूल से भिन्न हो।
कार्यान्वित उदाहरण: परिनियोजन स्क्रिप्ट से पूर्ण समाप्ति का निरीक्षण करें
विलय से पहले, गणना किए गए मान को यूनिट परीक्षण या ड्राई-रन आउटपुट में प्रदर्शित करें और इसे दिनांक के रूप में निरीक्षण करें। इच्छित जीवनकाल की पुष्टि के लिए ज्ञात संदर्भ क्षण को भी घटाएं। ये दो चेक अलग-अलग गलतियाँ पकड़ते हैं: गलत महीने में एक संभावित तारीख और कमजोर स्थानीय धारणाओं के कारण सही तारीख।
दावों में दीवार घड़ी के स्थान पर स्थिर फिक्स्चर का उपयोग करें। फिर वास्तविक क्रमांकन सीमा का परीक्षण करें ताकि क्लाइंट द्वारा सेकंड मान को दोबारा परिवर्तित न किया जाए। ToolAcre एक स्वतंत्र मानव जांच के रूप में कार्य करता है, न कि एकमात्र स्वचालित रक्षा के रूप में।
इसमें क्या शामिल नहीं है - HTTP-एक्सपायर हेडर के लिए दिनांक स्वरूपण, जो एक युग के बजाय एक पाठ्य प्रारूप का उपयोग करता है
कुछ समाप्ति इंटरफ़ेस युगों के बजाय पाठ्य दिनांक स्वरूपों का उपयोग करते हैं। यह रिपॉजिटरी डिस्प्ले के लिए ISO उत्पन्न करता है और दिनांक-संगत इनपुट को पार्स करता है, लेकिन यह प्रोटोकॉल-विशिष्ट हेडर दिनांक उत्पन्न नहीं करता है। एक संख्या को सही ढंग से परिवर्तित करने से यह साबित नहीं होता है कि टेक्स्ट हेडर में आवश्यक व्याकरण या ज़ोन लेबल है।
उस प्रोटोकॉल के लिए एक समर्पित, परीक्षण किए गए एडाप्टर में फ़ॉर्मेटिंग रखें। किसी मानव स्ट्रिंग को संख्यात्मक फ़ील्ड में पेस्ट न करें या यह न मानें कि ISO आउटपुट प्रत्येक वायर प्रारूप को प्रतिस्थापित कर सकता है। समाप्ति क्षण और उसका क्रमांकन अलग-अलग परतें हैं, और प्रत्येक की अपनी अनुबंध जांच होनी चाहिए।
पाठ्य समाप्ति प्रारूप संख्यात्मक युगों से अलग अनुबंध हैं
प्रत्येक पूर्ण समाप्ति को रिलीज से पहले मानव तिथि के रूप में एक बार पढ़ा जाना चाहिए। वह संक्षिप्त जांच इकाई, अवधि-बनाम-तत्काल और आधी रात की व्याख्या त्रुटियों को पकड़ती है जबकि कोड अभी भी समीक्षा योग्य है। यह प्रतिगमन परीक्षणों के लिए एक ठोस अपेक्षित परिणाम भी तैयार करता है।
स्पष्ट लक्ष्य इकाई के साथ कन्वर्टर का उपयोग करें, नीति के साथ UTC की तुलना करें, और संग्रहीत लक्षण के बजाय गणना को ठीक करें। एक पठनीय समाप्ति लक्ष्य-API की शुद्धता का पर्याप्त प्रमाण नहीं है, लेकिन एक अपठनीय समाप्ति को कभी भी बिना ध्यान दिए उत्पादन तक नहीं पहुंचना चाहिए।
परिवर्तन समीक्षा में अपेक्षित ISO को तुरंत संलग्न करें, लेकिन निष्पादन योग्य दावे को संख्यात्मक रखें। मानव समीक्षा और मशीन प्रतिगमन फिर सीमा के पूरक भागों की रक्षा करते हैं।