जब आप अपने एप्लिकेशन को पुनरारंभ करते हैं, यानी वेब सर्वर, यह आपके एप्लिकेशन वेरिएबल को रीसेट कर देगा और आपका हिट काउंटर शून्य पर रीसेट हो जाएगा। इस नुकसान से बचने के लिए, निम्नलिखित बिंदुओं पर विचार करें:
- डेटाबेस टेबल परिभाषित करें एकल काउंट के साथ, मान लें
hitcount. इसे शून्य मान असाइन करें। - प्रत्येक हिट के साथ, टेबल पढ़ें
hitcountका मान प्राप्त करने के लिए। - मान बढ़ाएं
hitcountको एक से और नए मान के साथ टेबल अपडेट करें। - नया मान प्रदर्शित करें कुल पेज हिट काउंट के रूप में
hitcountका। - सभी पेजों के लिए हिट गिनने के लिए, उपरोक्त तर्क को सभी पेजों के लिए लागू करें।
उन्नत दृष्टिकोण
1. डेटाबेस के साथ लगातार काउंटर
-- SQL टेबल
CREATE TABLE page_hits (
page_url VARCHAR(255) PRIMARY KEY,
hit_count BIGINT DEFAULT 0,
last_updated TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- JSP कोड (सरलीकृत)
<%
String page = request.getRequestURI();
// DB से पढ़ें, बढ़ाएं, अपडेट करें (ट्रांजैक्शन में)
// PreparedStatement का उपयोग करें SQL इंजेक्शन रोकने के लिए
%>
2. कैशिंग के साथ प्रदर्शन अनुकूलन
- काउंट को मेमोरी में कैश करें (उदाहरण:
AtomicLongयाConcurrentHashMap)। - डेटाबेस में समय-समय पर फ्लश करें (उदाहरण: हर 100 हिट्स या हर मिनट)।
- एप्लिकेशन शटडाउन पर
ServletContextListenerका उपयोग करके फ्लश करें।
3. वितरित वातावरण के लिए
- केंद्रीकृत कैश के लिए Redis या Memcached का उपयोग करें।
INCRपरमाणु संचालन थ्रेड-सुरक्षा सुनिश्चित करता है।
4. एनालिटिक्स एकीकरण
- विस्तृत ट्रैकिंग के लिए Google Analytics, Matomo, या कस्टम इवेंट लॉगिंग पर विचार करें।
- हिट काउंटर बुनियादी पेज व्यू प्रदान करते हैं; एनालिटिक्स उपयोगकर्ता व्यवहार अंतर्दृष्टि प्रदान करते हैं।
सारांश
एप्लिकेशन पुनरारंभ पर डेटा हानि से बचने के लिए, लगातार संग्रहण (डेटाबेस/कैश) का उपयोग करें न कि केवल मेमोरी-आधारित Application स्कोप एट्रिब्यूट्स। प्रदर्शन के लिए कैशिंग के साथ संयोजित करें।