AJAX Auto Load | Modern Documentation

AJAX Auto Load

Message Page Auto Load - সম্পূর্ণ ডকুমেন্টেশন ও লাইভ ডেমো

Real-time Auto Load Message Auto Refresh No Page Reload

Message Auto Load কি?

Message Page Auto Load হল এমন একটি টেকনিক যেখানে পেজ রিলোড ছাড়াই স্বয়ংক্রিয়ভাবে নতুন মেসেজ লোড হয়। এটি চ্যাট অ্যাপ, নোটিফিকেশন সিস্টেম, লাইভ ফিডের জন্য অত্যন্ত গুরুত্বপূর্ণ।

কেন Auto Load প্রয়োজন?
• ইউজারকে ম্যানুয়ালি রিফ্রেশ করতে হয় না
• রিয়েল-টাইম এক্সপেরিয়েন্স
• সার্ভারের লোড কমে
• ব্যান্ডউইথ সাশ্রয় হয়

Auto Load পদ্ধতি সমূহ

পদ্ধতিবিবরণসেরা ব্যবহার
Page Loadপেজ ওপেন হলে ডাটা লোডইনিশিয়াল ডাটা
Pollingনির্দিষ্ট সময় পর পর চেকচ্যাট, নোটিফিকেশন
Infinite Scrollস্ক্রোল করলে লোডফিড, টাইমলাইন
WebSocketরিয়েল-টাইম পুশলাইভ চ্যাট, গেম

Page Load Auto Load

JavaScript (Vanilla)
// পেজ লোড হলে স্বয়ংক্রিয়ভাবে মেসেজ লোড
document.addEventListener('DOMContentLoaded', function() {
    loadMessages();
});

async function loadMessages() {
    try {
        const response = await fetch('api/get-messages.php');
        const messages = await response.json();
        displayMessages(messages);
    } catch(error) {
        console.error('Error loading messages:', error);
    }
}

Interval Auto Load (Polling)

SetInterval Method
// প্রতি 3 সেকেন্ড পর পর মেসেজ চেক
let intervalId = null;

function startAutoLoad() {
    if(intervalId) clearInterval(intervalId);
    
    // প্রথমবার ইমিডিয়েট লোড
    loadNewMessages();
    
    // প্রতি 3 সেকেন্ড পর পর লোড
    intervalId = setInterval(loadNewMessages, 3000);
}

function stopAutoLoad() {
    if(intervalId) {
        clearInterval(intervalId);
        intervalId = null;
    }
}

// শুধু নতুন মেসেজ লোড (Optimized)
let lastMessageId = 0;

async function loadNewMessages() {
    const response = await fetch(`api/new-messages.php?last_id=${lastMessageId}`);
    const newMessages = await response.json();
    
    if(newMessages.length > 0) {
        appendMessages(newMessages);
        lastMessageId = newMessages[newMessages.length - 1].id;
    }
}

Infinite Scroll Auto Load

Scroll Detection
// Intersection Observer (Best Practice)
let page = 1;
let isLoading = false;

const observer = new IntersectionObserver((entries) => {
    entries.forEach(entry => {
        if(entry.isIntersecting && !isLoading) {
            loadMoreMessages();
        }
    });
}, { threshold: 0.1 });

// Sentinel element observe করা
const sentinel = document.getElementById('sentinel');
observer.observe(sentinel);

async function loadMoreMessages() {
    isLoading = true;
    showLoading();
    
    const response = await fetch(`api/messages.php?page=${page}`);
    const messages = await response.json();
    
    appendMessages(messages);
    page++;
    isLoading = false;
    hideLoading();
}

WebSocket (Real-time)

WebSocket Connection
// WebSocket - সবচেয়ে আধুনিক পদ্ধতি
const socket = new WebSocket('wss://your-server.com/chat');

socket.onopen = function() {
    console.log('সংযোগ স্থাপিত হয়েছে');
    socket.send(JSON.stringify({ type: 'join', room: 'general' }));
};

socket.onmessage = function(event) {
    const message = JSON.parse(event.data);
    // নতুন মেসেজ UI তে যোগ করুন
    addMessageToUI(message);
};

socket.onerror = function(error) {
    console.error('WebSocket Error:', error);
};

// মেসেজ সেন্ড করার ফাংশন
function sendMessage(text, user) {
    const message = {
        type: 'message',
        text: text,
        user: user,
        timestamp: new Date()
    };
    socket.send(JSON.stringify(message));
}

Best Practices

Debouncing
স্ক্রোল ইভেন্টে অতিরিক্ত কল কমান
Incremental Loading
শুধু নতুন ডাটা আনুন
Error Handling
নেটওয়ার্ক এরর হ্যান্ডল করুন
Optimistic Updates
UI আগে আপডেট, ব্যাকএন্ড পরে

Live Demo: Message Auto Load

এই ডেমো পেজ লোড হলে স্বয়ংক্রিয়ভাবে মেসেজ লোড করবে

লোড হচ্ছে...

প্রতি 3 সেকেন্ড পর পর নতুন মেসেজ লোড হবে

"Start Auto Load" ক্লিক করুন

নিচে স্ক্রোল করতে থাকুন - নতুন মেসেজ অটো লোড হবে!

প্রথম লোড হচ্ছে...