এপিআই ডকুমেন্টেশন
রেসপন্স ক্যাশিং এবং সিডিএন ইন্টিগ্রেশন গাইড
স্মার্ট মানি এপিআই-এর পারফরম্যান্স অপ্টিমাইজ করুন ইন্টেলিজেন্ট ক্যাশিং স্ট্র্যাটেজি দিয়ে। এইচটিটিপি ক্যাশ হেডার, ইট্যাগ ভ্যালিডেশন, সিডিএন ইন্টিগ্রেশন এবং ক্লায়েন্ট-সাইড ক্যাশিং প্যাটার্ন শিখুন লেটেন্সি এবং ব্যান্ডউইথ খরচ কমানোর জন্য।
প্রকাশিত মার্চ ২১, ২০২৬
•
১৬ মিনিটের পড়া
•
পারফরম্যান্স
ক্যাশিং ওভারভিউ
স্মার্ট মানি এপিআই এন্ডপয়েন্টগুলি ক্রিপ্টোকারেন্সি মার্কেট ডেটা সরবরাহ করে যা বিভিন্ন ফ্রিকোয়েন্সিতে পরিবর্তিত হয়। কিছু ডেটা (হোয়েল অ্যাড্রেস, ফান্ডিং রেট) প্রতি কয়েক সেকেন্ডে আপডেট হয়, অন্যদিকে অন্যান্য ডেটা (হিস্টরিকাল অ্যানালাইসিস, এডুকেশনাল কন্টেন্ট) ঘন্টার জন্য স্ট্যাটিক থাকে। ইন্টেলিজেন্ট ক্যাশিং পারফরম্যান্স উল্লেখযোগ্যভাবে উন্নত করে এবং খরচ কমায়।
স্মার্ট মানি এপিআই একটি তিন-স্তরের ক্যাশিং স্ট্র্যাটেজি বাস্তবায়ন করে:
- সিডিএন এজ ক্যাশ — অটোমেটিক ক্যাশ ইনভ্যালিডেশন সহ গ্লোবাল কন্টেন্ট ডেলিভারি
- এইচটিটিপি ব্রাউজার ক্যাশ — স্ট্যান্ডার্ড এইচটিটিপি হেডার ব্যবহার করে ক্লায়েন্ট-সাইড ক্যাশিং
- অ্যাপ্লিকেশন ক্যাশ — প্রায়শই অ্যাক্সেস করা ডেটাসেটের জন্য ইন-মেমোরি ক্যাশিং
পারফরম্যান্স ইনসাইট: ক্যাশড রেসপন্স ফ্রেশ এপিআই রিকোয়েস্টের চেয়ে ৫০-১০০x দ্রুত সার্ভ করে এবং ব্যান্ডউইথ উল্লেখযোগ্যভাবে সেভ করে। সঠিকভাবে ক্যাশড ইন্টিগ্রেশন ডেটা ট্রান্সফার ৭০-৮৫% কমাতে পারে।
প্রতিটি স্মার্ট মানি এপিআই রেসপন্সে ক্যাশ ডাইরেক্টিভ অন্তর্ভুক্ত থাকে যা ক্লায়েন্ট এবং সিডিএন-কে বলে ডেটা কতক্ষণ বৈধ থাকে। এই ডাইরেক্টিভগুলি বোঝা এবং সঠিকভাবে বাস্তবায়ন করা অপ্টিমাল পারফরম্যান্সের জন্য অত্যন্ত গুরুত্বপূর্ণ।
ক্যাশিং ফান্ডামেন্টালস
এইচটিটিপি ক্যাশিং রেসপন্স হেডারের উপর ভিত্তি করে কাজ করে যা নির্দেশ করে কন্টেন্ট ক্যাশ করা যায় কিনা এবং কতক্ষণের জন্য।
ক্যাশ-কন্ট্রোল হেডার
ক্যাশ বিহেভিয়ার নিয়ন্ত্রণের প্রাথমিক মেকানিজম। প্রতিটি স্মার্ট মানি এপিআই রেসপন্সে একটি ক্যাশ-কন্ট্রোল হেডার অন্তর্ভুক্ত থাকে যা নির্দিষ্ট করে:
- max-age — সেকেন্ডে সময়কাল যতক্ষণ রেসপন্স বৈধ থাকে
- public/private — ইন্টারমিডিয়েট ক্যাশ এটি সংরক্ষণ করতে পারে কিনা
- must-revalidate — সার্ভ করার আগে ফ্রেশনেস চেক করতে হবে কিনা
- no-store — সংবেদনশীল ডেটা ক্যাশ করবেন না
উদাহরণ ক্যাশ হেডার্স
ভিন্ন এন্ডপয়েন্টের ভিন্ন ক্যাশ প্রয়োজনীয়তা রয়েছে:
// হোয়েল অ্যাড্রেস ডেটা (প্রতি ৫ মিনিটে আপডেট)
Cache-Control: public, max-age=300
ETag: "abc123def456"
// রিয়েল-টাইম ফান্ডিং রেট (প্রতি সেকেন্ডে আপডেট)
Cache-Control: public, max-age=1
ETag: "xyz789abc123"
// হিস্টরিকাল ডেটা (পরিবর্তন হয় না)
Cache-Control: public, max-age=86400, immutable
ETag: "static-content-v1"
এন্ডপয়েন্ট টাইপ অনুযায়ী ক্যাশ ডিউরেশন
| ডেটা টাইপ |
ক্যাশ ডিউরেশন |
ইউস কেস |
| রিয়েল-টাইম ফান্ডিং |
১-৫ সেকেন্ড |
লাইভ ট্রেডিং, পজিশন সাইজিং |
| হোয়েল মুভমেন্টস |
৫ মিনিট |
সিগন্যাল কনফার্মেশন, অ্যালার্টস |
| ডেইলি OHLCV |
১ ঘন্টা |
টেকনিক্যাল অ্যানালাইসিস, চার্টস |
| হিস্টোরিক্যাল অ্যানালাইসিস |
২৪ ঘন্টা |
ব্যাকটেস্টিং, রিসার্চ |
| স্ট্যাটিক কনটেন্ট |
৭ দিন |
API ডক্স, গাইডস, কনফিগারেশন |
৩০ সেকেন্ডে আপনার API কী পান
বিল্ড করতে প্রস্তুত? বিনামূল্যে একটি API কী নিন (৫০ কল/দিন, কোন কার্ড নেই) এবং লাইভ হোয়েল, ফান্ডিং এবং অন-চেইন ডেটা পুল করা শুরু করুন।
আপনার API কী পান →
ETag এবং কন্ডিশনাল রিকোয়েস্ট
ETags (এনটিটি ট্যাগ) সম্পূর্ণ রেস্পন্স বডি ডাউনলোড না করে ক্যাশড কনটেন্ট ভ্যালিডেট করার একটি দক্ষ উপায় প্রদান করে।
ETag কিভাবে কাজ করে
- ইনিশিয়াল রিকোয়েস্ট — ক্লায়েন্ট ডেটা রিকোয়েস্ট করে, সার্ভার ETag সহ রেস্পন্স করে
- ক্যাশ স্টোরেজ — ক্লায়েন্ট ETag সহ রেস্পন্স ক্যাশ করে
- পরবর্তী রিকোয়েস্ট — ক্লায়েন্ট ক্যাশে করা ETag সহ If-None-Match হেডার পাঠায়
- ভ্যালিডেশন — ডেটা অপরিবর্তিত থাকলে সার্ভার 304 Not Modified রিটার্ন করে
- ব্যান্ডউইথ সেভড — কোনো রেসপন্স বডি পাঠানো হয় না, বিশাল ব্যান্ডউইথ সেভিং
ETag ইমপ্লিমেন্টেশন
// প্রথম রিকোয়েস্ট
GET /v1/whales/btc HTTP/1.1
// রেসপন্সে ETag অন্তর্ভুক্ত
HTTP/1.1 200 OK
ETag: "8a3b9c2d"
Cache-Control: public, max-age=300
Content-Type: application/json
{...response body...}
// ক্যাশে এক্সপায়ার হওয়ার পর, If-None-Match পাঠান
GET /v1/whales/btc HTTP/1.1
If-None-Match: "8a3b9c2d"
// অপরিবর্তিত থাকলে সার্ভার 304 রেসপন্ড করে
HTTP/1.1 304 Not Modified
ETag: "8a3b9c2d"
Cache-Control: public, max-age=300
// কোনো বডি পাঠানো হয়নি! ব্যান্ডউইথ সেভড
ETag স্ট্রেন্থ
ETag স্ট্রং বা উইক হতে পারে:
| টাইপ |
ফরম্যাট |
ইউজ কেস |
| স্ট্রং ETag |
"8a3b9c2d" |
বাইট-ফর-বাইট আইডেন্টিক্যাল, ভ্যালিডেশনের জন্য ব্যবহার করুন |
| উইক ETag |
W/"8a3b9c2d" |
সিমান্টিক্যালি ইকুইভ্যালেন্ট, ডিসপ্লে চেঞ্জের জন্য |
ক্যাশে কন্ট্রোল ডাইরেক্টিভস
ক্যাশে-কন্ট্রোল ডাইরেক্টিভস বোঝার মাধ্যমে আপনার অ্যাপ্লিকেশনের জন্য অপ্টিমাল ক্যাশিং স্ট্র্যাটেজি বিল্ড করা সম্ভব।
ডাইরেক্টিভ রেফারেন্স
| ডাইরেক্টিভ |
মিনিং |
উদাহরণ |
| max-age |
রেসপন্স কত সেকেন্ড ফ্রেশ থাকবে |
max-age=300 |
| public |
ক্যাশে স্টোর এবং শেয়ার করতে পারে |
public |
| private |
শুধুমাত্র রিসিপিয়েন্টের জন্য ক্যাশে |
private |
| must-revalidate |
স্টেল হলে রিভ্যালিডেট করুন |
must-revalidate |
| no-cache |
ব্যবহারের আগে রিভ্যালিডেট করতে হবে |
no-cache |
| no-store |
ক্যাশে করবেন না |
no-store |
| immutable |
কখনো পরিবর্তন হয় না, চিরকাল ক্যাশে করুন |
immutable |
| s-maxage |
CDN ক্যাশে ডিউরেশন |
s-maxage=3600 |
প্র্যাকটিক্যাল ক্যাশে-কন্ট্রোল প্যাটার্নস
// প্যাটার্ন 1: ব্রাউজার ক্যাশে, CDN-এ 1 ঘন্টা
Cache-Control: public, max-age=300, s-maxage=3600
// প্যাটার্ন 2: ইউজার-স্পেসিফিক ডেটা, প্রক্সি ক্যাশে নেই
Cache-Control: private, max-age=1800
// প্যাটার্ন 3: সর্বদা ফ্রেশ, সর্বদা চেক করুন
Cache-Control: public, no-cache, must-revalidate
// প্যাটার্ন 4: ইমিউটেবল ভার্সনড অ্যাসেট
Cache-Control: public, max-age=31536000, immutable
CDN ইন্টিগ্রেশন
Smart Money API রেসপন্সগুলি Cloudflare-এর গ্লোবাল CDN নেটওয়ার্কের মাধ্যমে ডেলিভার করে, স্বয়ংক্রিয়ভাবে ওয়ার্ল্ডওয়াইড এজ লোকেশনে রেসপন্স ক্যাশে করে মিনিমাম লেটেন্সির জন্য।
হাউ Smart Money CDN ওয়ার্কস
- ইউজার রিকোয়েস্ট — রিকোয়েস্ট নিকটতম Cloudflare এজ লোকেশনে হিট করে
- ক্যাশে চেক — এজ চেক করে রেসপন্স ক্যাশে করা এবং ফ্রেশ কিনা
- ক্যাশে হিট — ক্যাশে করা থাকলে, <10ms লেটেন্সিতে সাথে সাথে সার্ভ করুন
- ক্যাশে মিস — ক্যাশে করা না থাকলে, অরিজিন সার্ভার থেকে ফেচ করুন
- স্টোর অ্যান্ড সার্ভ — রেসপন্স ক্যাশে করে ইউজারকে ডেলিভার করুন
ক্যাশে কী কনফিগারেশন
Cloudflare ক্যাশে কী ব্যবহার করে ক্যাশে করা রেসপন্সকে ইউনিকভাবে আইডেন্টিফাই করে। ডিফল্টভাবে:
- রিকোয়েস্ট পাথ এবং ক্যোয়ারী প্যারামিটার অন্তর্ভুক্ত
- অধিকাংশ হেডার ইগনোর করা হয় (ক্যাশে হিট ম্যাক্সিমাইজ করার জন্য)
- অথোরাইজেশন হেডার অন্তর্ভুক্ত নয় (কোন অ্যাকাউন্ট লিকেজ নয়)
- কাস্টম হেডার Vary হেডারের মাধ্যমে অন্তর্ভুক্ত করা যেতে পারে
CDN পার্জিং
Smart Money স্বয়ংক্রিয়ভাবে CDN ক্যাশে পার্জ করে যখন ডেটা আপডেট হয়:
// CDN থেকে স্পেসিফিক URL পার্জ করুন
curl -X POST "https://api.smartmoneyapi.com/v1/cache/purge" \
-H "Authorization: Bearer token" \
-d '{
"urls": [
"https://api.smartmoneyapi.com/v1/whales/btc"
]
}'
মেজারিং CDN পারফরম্যান্স
রেসপন্স হেডার চেক করুন দেখতে রিকোয়েস্ট ক্যাশে থেকে সার্ভ করা হয়েছিল কিনা:
// CDN এজ থেকে ক্যাশে হিট
CF-Cache-Status: HIT
CF-RAY: 8a9b7c6d5e4f3g2h
Age: 45 // ক্যাশে হওয়ার পর থেকে সেকেন্ড
// ক্যাশে মিস, অরিজিন থেকে ফেচ করা
CF-Cache-Status: MISS
Age: 0
ক্লায়েন্ট-সাইড ক্যাশিং
আপনার অ্যাপ্লিকেশনে ক্যাশিং ইমপ্লিমেন্ট করুন API কল আরও কমাতে এবং রেসপন্সিভনেস ইম্প্রুভ করতে।
ব্রাউজার ক্যাশে ইমপ্লিমেন্টেশন
// ক্যাশে স্টোরেজ তৈরি করুন
const cache = new Map();
async function fetchWithCache(url) {
// ক্যাশে প্রথমে চেক করুন
const cached = cache.get(url);
if (cached && !isCacheExpired(cached)) {
return cached.data;
}
// API থেকে ফেচ করুন
const response = await fetch(url);
const data = await response.json();
// হেডার থেকে ক্যাশে সময়কাল পার্স করুন
const cacheControl = response.headers
.get('cache-control');
const maxAge = parseMaxAge(cacheControl);
// ক্যাশে স্টোর করুন
cache.set(url, {
data,
expiry: Date.now() + (maxAge * 1000)
});
return data;
}
সার্ভিস ওয়ার্কার ক্যাশিং
অফলাইন সাপোর্ট এবং উন্নত ক্যাশিং স্ট্র্যাটেজির জন্য সার্ভিস ওয়ার্কার ব্যবহার করুন:
// সার্ভিস ওয়ার্কার দিয়ে API রেসপন্স ক্যাশ করুন
self.addEventListener('fetch', (event) => {
if (event.request.url.includes('api.smartmoneyapi.com')) {
// নেটওয়ার্ক প্রথম, ক্যাশে ফ্যালব্যাক
event.respondWith(
fetch(event.request)
.then(response => {
// ফ্রেশ রেসপন্স দিয়ে ক্যাশে আপডেট করুন
caches.open('api-cache')
.then(cache => cache.put(
event.request, response.clone()));
return response;
})
.catch(() =>
caches.match(event.request))
);
}
});
ক্যাশে বাস্টিং স্ট্র্যাটেজি
কখনও কখনও ক্লায়েন্টদের ফ্রেশ ডেটা পেতে বাধ্য করতে হবে। এই টেকনিকগুলি ব্যবহার করুন:
ভার্সন প্যারামিটার
ডেটা পরিবর্তন হলে ক্যাশে ইনভ্যালিডেট করার জন্য একটি ভার্সন প্যারামিটার যোগ করুন:
// ডেটা ভার্সন বা টাইমস্ট্যাম্প অন্তর্ভুক্ত করুন
https://api.smartmoneyapi.com/v1/whales/btc?v=1709980800
// ডেটা আপডেট হলে ভার্সন বাড়ান
https://api.smartmoneyapi.com/v1/whales/btc?v=1709981000
// নতুন URL = নতুন ক্যাশে এন্ট্রি
ফোর্স রিভ্যালিডেশন
ফ্রেশ ডেটা প্রয়োজন হলে Cache-Control: no-cache দিয়ে ক্যাশে ওভাররাইড করুন:
// JavaScript: ফ্রেশ রিকোয়েস্ট ফোর্স করুন
fetch(url, {
cache: 'no-cache', // সর্বদা রিভ্যালিডেট করুন
headers: {
'Cache-Control': 'max-age=0'
}
});
ক্যাশে পারফরম্যান্স মনিটরিং
আপনার ক্যাশিং স্ট্র্যাটেজি ভ্যালিডেট করতে ক্যাশে হিট রেট এবং পারফরম্যান্স ইম্প্রুভমেন্ট ট্র্যাক করুন।
মনিটর করার জন্য ক্যাশে মেট্রিক্স
- হিট রেট — ক্যাশে থেকে সার্ভ করা রিকোয়েস্টের শতাংশ (টার্গেট: >70%)
- রেসপন্স টাইম — গড় লেটেন্সি (ক্যাশেড: <50ms, আনক্যাশেড: 100-300ms)
- ব্যান্ডউইথ সেভড — ডেটা ট্রান্সফার কমানো
- অরিজিন লোড — অরিজিন সার্ভারে রিকোয়েস্ট কমানো
ক্যাশে হেডার অ্যানালাইজিং
// রেসপন্স ক্যাশে হেডার অ্যানালাইজ করুন
async function analyzeCache(url) {
const response = await fetch(url);
return {
cacheControl: response.headers
.get('cache-control'),
etag: response.headers.get('etag'),
age: response.headers.get('age'),
cfStatus: response.headers
.get('cf-cache-status'),
contentLength:
response.headers.get('content-length')
};
}
ক্যাশিং বেস্ট প্র্যাকটিসেস
1. রেসপন্স হেডার সম্মান করুন
স্মার্ট মানি API থেকে Cache-Control হেডার সর্বদা সম্মান করুন। no-store বা no-cache মার্ক করা কন্টেন্ট ক্যাশে করবেন না।
2. কন্ডিশনাল রিকোয়েস্ট ইম্প্লিমেন্ট করুন
ক্যাশড কন্টেন্ট রিভ্যালিডেট করার সময় If-None-Match (ETag) এবং If-Modified-Since হেডার পাঠান। 304 রেসপন্স দিয়ে ব্যান্ডউইথ সেভ করুন।
3. ডেটা টাইপ অনুযায়ী যথাযথভাবে ক্যাশে করুন
- রিয়েল-টাইম ডেটা (ফান্ডিং রেট): 1-5 সেকেন্ড ক্যাশে সর্বোচ্চ
- লাইভ সিগন্যাল (হোয়েল মুভমেন্ট): 5-30 সেকেন্ড ক্যাশে
- আওয়ারলি ডেটা (OHLCV): 1 ঘন্টা ক্যাশে
- হিস্টোরিকাল ডেটা: 24-ঘন্টা ক্যাশে
- স্ট্যাটিক কন্টেন্ট: 7-দিন ক্যাশে
4. ক্যাশে এফেক্টিভনেস মনিটর করুন
হিট রেট এবং লেটেন্সি ইম্প্রুভমেন্ট ট্র্যাক করুন। ডেটা ফ্রেশনেস রিকোয়ারমেন্ট এবং ক্যাশে পারফরম্যান্সের উপর ভিত্তি করে TTLs অ্যাডজাস্ট করুন।
5. Vary হেডার সাবধানে ব্যবহার করুন
Vary হেডার আলাদা ক্যাশে এন্ট্রি তৈরি করে ক্যাশে হিট কমায়। শুধুমাত্র প্রয়োজন হলে বিভিন্ন অথেন্টিকেশন লেভেল বা প্যারামিটারের জন্য ব্যবহার করুন।
6. মাল্টিপল লেয়ারে ক্যাশে করুন
CDN, ব্রাউজার এবং অ্যাপ্লিকেশন লেভেলে ক্যাশিং ইম্প্লিমেন্ট করুন। প্রতিটি লেয়ার অরিজিনে হিট করার আগে রিকোয়েস্ট ক্যাচ করে।
আপনার API পারফরম্যান্স অপ্টিমাইজ করুন
স্মার্ট মানি API এর ক্যাশিং ইনফ্রাস্ট্রাকচার গ্লোবাল স্কেলে 100ms এর নিচে রেসপন্স নিশ্চিত করে। পারফরম্যান্স ম্যাক্সিমাইজ এবং খরচ মিনিমাইজ করতে ইন্টেলিজেন্ট ক্যাশিং স্ট্র্যাটেজি ইম্প্লিমেন্ট করুন।
প্ল্যান তুলনা করুন
সমস্ত প্ল্যানে সম্পূর্ণ CDN ক্যাশিং অন্তর্ভুক্ত। উচ্চতর টায়ার ক্যাশে কন্ট্রোল এবং পার্জিং API প্রদান করে।