Velog व्यू काउंट जाँच API (बीटा)
(github.com/day1swhan)विकास पृष्ठभूमि और इम्प्लिमेंटेशन आइडिया
- Velog पर लिखी गई पोस्टों के व्यू काउंट जानने थे, लेकिन हर बार लॉगिन करके देखना झंझट भरा था
- Velog के आंतरिक व्यू API को reverse engineer भी किया जा सकता था, लेकिन वह झंझट भरा लगता था और scalability (जैसे visitor notifications) भी कम रहती
- याद आया कि पहले कोरिया की ईमेल सेवाएँ pixel image का इस्तेमाल करके read receipt फीचर देती थीं
- Velog, Markdown syntax का उपयोग करके पोस्ट लिखने का समर्थन करता है
- ब्राउज़र cross-site domain होने पर भी साधारण image request को ब्लॉक नहीं करता
- अगर पोस्ट में 1x1 pixel की transparent image डाल दी जाए, तो हर बार पोस्ट देखे जाने पर सर्वर साइड पर call record छोड़ा जा सकता है
- ज़्यादातर Velog यूज़र की पोस्टों पर रोज़ 1,000 से अधिक विज़िटर नहीं आते। इस स्तर के ट्रैफ़िक के लिए Workers KV भी पर्याप्त है
- यह सिर्फ Velog तक सीमित नहीं है; जो भी प्लेटफ़ॉर्म Markdown syntax से image embed को सपोर्ट करता है (और user domain से image serve की जा सकती है), वहाँ इसका उपयोग किया जा सकता है
काम करने का तरीका
- image को पहचान मान (slug) देने के बाद CDN की जगह programmable Workers से response दिया जाए, और उस पहचान मान को KV के
Key prefixके रूप में उपयोग करके call record स्टोर किया जाए, तो आसानी से page view निकाले जा सकते हैं - तारीख, ip, userAgent, image identifier को
Hashफ़ंक्शन से key value में बदलने पर कम-से-कम स्तर पर duplicate visit को संभाला जा सकता है- HASH: SHA-256 आधारित 128-bit hash को base64url (22 characters) में encode किया गया
- KEY:
view:${slug}:${hash}. - VALUE: UserAgent, Date...
- Workers KV free plan प्रतिदिन 1,000 PUT और LIST को सपोर्ट करता है
- PUT: प्रतिदिन 1,000 विज़िटर काउंटिंग जानकारी स्टोर की जा सकती है
- LIST: प्रतिदिन 1,000 से अधिक page view जानकारी प्रदान की जा सकती है
- page view query request में LIST command का उपयोग किया जाता है; पहचान मान (slug) जानकारी को
prefixके रूप में लेकर डेटा लाया जाता है और फिर उसे साधारण रूप से count कर दिया जाता है- page view query में real-time होना बहुत महत्वपूर्ण नहीं है, इसलिए response value को उचित रूप से cache किया जाए तो प्रतिदिन 1,000 से अधिक request संभाले जा सकते हैं
सीमाएँ
तेज़ विकास के लिए साधारण storage KV का उपयोग किया गया है, इसलिए निम्न सीमाएँ हैं।
- Eventual consistency: Workers KV PUT request real-time नहीं होते। अगर real-time अनिवार्य हो, तो Durable Objects(DO) का उपयोग करना होगा।
- LIST निर्भरता: LIST command से counting करने का तरीका समय के साथ धीमा होता जाता है, क्योंकि (यह मानते हुए कि page view लगातार आते रहें) लाए जाने वाले KEY values की संख्या बढ़ती जाती है। Cron job से storage structure को लगातार अपडेट करना, या DO अथवा Analytics Engine का उपयोग करने पर विचार करना चाहिए।
समर्थन की योजना
जितनी जल्दी हो सके, निम्न सुविधाएँ जोड़ी जाएँगी।
- तारीख के अनुसार sort: सर्वरलेस ब्लॉग कमेंट API 30 मिनट में बनाकर देखना में latest comment sorting के लिए इस्तेमाल किए गए Unix Time का उपयोग करने पर latest session के आधार पर sorted list दी जा सकती है
- API सुरक्षा: middleware जोड़कर समर्थन दिया जाएगा। HTTP Authorization header का उपयोग करने की योजना है
- Rate Limit: अगर कोई लोकप्रिय Velog यूज़र हो, तो समय और जलन से अंधे उपयोगकर्ता malicious request भेज सकते हैं, इसलिए तैयारी ज़रूरी है। शायद यह मुझ पर लागू नहीं होता, इसलिए सबसे आखिर में जोड़ा जाएगा...
- खोज: अतिरिक्त API के रूप में समर्थन दिया जाएगा
- तारीख: किसी खास तारीख या अवधि के अनुसार search फीचर। KEY structure में बदलाव ज़रूरी
- सेशन: किसी खास session activity information की search सुविधा। वर्तमान session जानकारी प्रत्येक पोस्टिंग के लिए एक दिन तक वैध है। privacy policy की समीक्षा ज़रूरी
- ब्राउज़र/OS: UserAgent से parse की गई जानकारी के आधार पर उपलब्ध कराया जाएगा। बहुत सटीक न सही, लेकिन मोटा-मोटी समझ मिल जाएगी
- Service API: ताकि कोई भी आसानी से email verification + private key issuance के साथ इसका उपयोग कर सके, API को service के रूप में उपलब्ध कराया जाएगा
- वेबहुक: page view event होने पर POST request प्रदान की जाएगी। डेवलपरों की पसंद Slack के ज़रिए notification संभव होगा
- ईमेल: वे उपयोगकर्ता जो webhook handling को झंझट मानते हैं, उनके लिए पुराना लेकिन सुविधाजनक notification फीचर
- Custom campaign: configured event (जैसे किसी खास व्यू काउंट तक पहुँचना) के लिए integrated image identifier (slug) उपलब्ध कराया जाएगा
अतिरिक्त
- जिन लोगों की आंतरिक काम करने की संरचना में रुचि है, वे 1x1 pixel से शुरू होने वाली Velog व्यू काउंट जाँच API विकास कहानी देखें।
- इंस्टॉलेशन·डिप्लॉयमेंट तरीका, विस्तृत API Reference, और पूरा कोड Github रिपॉज़िटरी में देखा जा सकता है।
अभी कोई टिप्पणी नहीं है.