স্পষ্টতই AJAX ব্যবহারকারীর ইন্টারফেসের উন্নতি ঘটায় কিন্তু এটি কি সার্ভারের লোড হ্রাস করে? আপনি মনে করেন এটি এটি করে কারণ পুরো পৃষ্ঠাটি প্রতিবার পরিবেশন করা হবে না, তবে সম্ভবত অন্যান্য ভেরিয়েবলগুলিও আমি বিবেচনা করছি না।
স্পষ্টতই AJAX ব্যবহারকারীর ইন্টারফেসের উন্নতি ঘটায় কিন্তু এটি কি সার্ভারের লোড হ্রাস করে? আপনি মনে করেন এটি এটি করে কারণ পুরো পৃষ্ঠাটি প্রতিবার পরিবেশন করা হবে না, তবে সম্ভবত অন্যান্য ভেরিয়েবলগুলিও আমি বিবেচনা করছি না।
উত্তর:
এটি আপনি কী করছেন এবং কীভাবে করছেন তা নির্ভর করে।
আপনি যদি এজেএক্স অনুরোধের সাথে পুরো পৃষ্ঠা লোডগুলি প্রতিস্থাপন করছেন (উদাহরণস্বরূপ যখন কোনও ব্যবহারকারী পূর্ণ পৃষ্ঠার বোঝা কী হবে তার উপরে ক্লিক করলে) তখন আজেএক্স সার্ভার লোড হ্রাস পাবে কারণ আপনি (সম্ভবত) কম প্রসেসিং করছেন এবং কম ফিরছেন ডেটা।
অন্যদিকে, আপনি যদি অটো আপডেট আপডেট টাইপ AJAX যোগ করেন যা সার্ভারকে প্রতি কয়েক সেকেন্ড পরে পোল করে দেয় তবে এটি ব্যবহারকারীর উপর নির্ভর করে লোড বাড়িয়ে তুলতে পারে (ব্যবহারকারী যদি কোনওভাবে ম্যানুয়ালি রিফ্রেশ করতে F5 চাপায় তবে এটি সার্ভার লোড বাড়িয়ে তুলতে পারে না, তবে বেশিরভাগ লোকেরা সাধারণত ঘন্টা ধরে তা করে না)
অন্য এজেএক্স অপটিমাইজেশন হ'ল আপনি স্ক্রোল করার সাথে সাথে কেবলমাত্র আরও ডেটা লোড করা। সেক্ষেত্রে যদি ব্যবহারকারী পুরোপুরি স্ক্রোল না করে, তবে এটি প্রক্রিয়াজাতকরণের অপচয়।
অবশ্যই বাস্তবায়নের ফলে যেভাবেই ফলাফল ছাঁটাইয়া যায়, এগুলি যথাযথ ফলাফল যা যুক্তিসঙ্গতভাবে ভাল বাস্তবায়ন অনুমান করে।
অবশ্যই এটি সার্ভারের লোড হ্রাস করতে পরিবেশন করে। এ লুক এই উপস্থাপনাটি @ jsconf'09 - জন্য কিভাবে ফেসবুক Ajax ব্যবহার করা যে কাজ করতে।
অ্যাজাক্স অ্যাসিঙ্ক। সার্ভার যোগাযোগ - এবং আপনি এটি হাজারো উপায়ে ব্যবহার করতে পারেন। লোকেরা রিয়েল-টাইম ওয়েবে সাধারণ জেএসওএন এবং এর মধ্যে থাকা সমস্ত কিছু লোড করার জন্য এটি ব্যবহার করে।
মনে রাখবেন - আসল চ্যালেঞ্জটি হ'ল ক্লায়েন্ট এবং সার্ভারের মধ্যে ভারসাম্য । প্রতিটি দলকে এটি এমনভাবে কাজ করার জন্য প্রচেষ্টা করুন যাতে সিস্টেমটি অনুকূলিত হয় এবং আপনি অনুভূত প্রতিক্রিয়াশীলতা এবং বাস্তব গতির সুস্পষ্ট সুবিধা পান।
আপনি বিবেচনা করছেন না এমন অন্যান্য কারণ রয়েছে - বেশিরভাগ ক্ষেত্রে, এজেএক্স সার্ভারের লোড বাড়িয়ে তুলবে। একটি সাধারণ, অ-এজাক্স দৃশ্যে, ব্যবহারকারী প্রতি কয়েক সেকেন্ড বা কয়েক মিনিটে একটি বড় পৃষ্ঠা লোড করে। হ্যাঁ, সেই একক পৃষ্ঠাটি সার্ভারের জন্য কিছুটা বেশি কাজ, তবে অন্যান্য অনুরোধগুলি পুনরুদ্ধার ও পরিবেশন করার জন্য অনুরোধগুলির মধ্যে এর যথেষ্ট পরিমাণ সময় রয়েছে। একটি এজেএক্সাইফাইড দৃশ্যে, সেই একক পৃষ্ঠার লোড এখন কয়েক ডজন ছোট হিট, ক্রমাগত সার্ভারকে হাতুড়ি করে প্রতিক্রিয়াগুলির জন্য অপেক্ষা করছে।
এটি 1000 কাটা থেকে মৃত্যুর মতো কিছুটা - অনুরোধগুলির মধ্যে কোনওটিই নিজের এবং এগুলির মধ্যে বড় নয়, তবে মোট ওজন হত্যাকারী। বিশেষত যখন আপনি বিবেচনা শুরু করেন যে এই ছোট অনুরোধগুলি সম্পূর্ণ পৃষ্ঠার অনুরোধ হিসাবে পরিবেশন করা প্রায় ব্যয়বহুল। উভয় ক্ষেত্রেই, আপনি সম্ভবত একটি সম্পূর্ণ ওয়েব অ্যাপ্লিকেশন পাইপলাইনটি চালাচ্ছেন, একটি ডাটাবেসকে আঘাত করছেন এবং একটি মূল্যবান এইচটিটিপি সংযোগে বসে উত্তরের জন্য অপেক্ষা করছেন।
এখানে সার্ভারে অ্যাজাক্স কীভাবে কুৎসিত হতে পারে তার একটি উদাহরণ। আসুন একটি সাধারণ "এক্সিকিউটিভ ড্যাশবোর্ড" নেওয়া যাক যা উইজেটের জন্য 4 টি স্লট দেয়। আসুন ধরা যাক সিইও ডানদিকে পুরো বিক্রয় প্রতিবেদন পছন্দ করে, মাঝখানে উপার্জনকারীদের শীর্ষ 10 তালিকার এবং ডানদিকে একটি কোম্পানির শেয়ারের দামের প্রতিবেদনটি পছন্দ করেছে। এবং ধরা যাক আমরা সহজ এজ্যাক্স রিমোট অনুরোধগুলির মাধ্যমে এটি করতে যাচ্ছি। অ্যাকাউন্টের স্টাইলশিট, চিত্র এবং অন্যান্য সম্পদ গ্রহণ না করেই আপনার পৃষ্ঠায় এখন সার্ভারের বিপরীতে 4 টি HTTP রাউন্ড ট্রিপ (মূল পৃষ্ঠা, প্রতিটি ড্যাশবোর্ড প্রতিবেদন) প্রয়োজন। এগুলির প্রত্যেকটির কার্যকর করার জন্য একটি সম্পূর্ণ ওয়েব স্ট্যাকের প্রয়োজন - আপনি নিজের ওয়েব ফ্রেমওয়ার্ক ব্যবহার করে ডাটাবেসগুলি হিট এবং এইচটিএমএল রেন্ডার করতে যাচ্ছেন, তাই না? এখন একক সিইওকে 2000 টি রিমোট ব্যবহারকারী দ্বারা গুণিত করুন যার মধ্যে কিছু স্পটযুক্ত সংযোগ রয়েছে।
বিপরীতে, আপনার কাছে একটি একক সার্ভার-সাইড পৃষ্ঠা থাকতে পারে যা রিপোর্টগুলি রেন্ডার করতে একটি এইচটিএমএল কঙ্কাল এবং সেই সাথে ডেটা (ইন-পৃষ্ঠা জেএসওনে অন্তর্ভুক্ত) কার্যকর করে এবং প্রদান করে। একক, বড় সংযোগ কিন্তু মোট ওয়েব সার্ভারে কম মারার কারণ আপনি 4 টি অনুরোধ পরিচালনা করছেন না এবং 4 টি পাইপলাইন ইত্যাদি কাটছেন না etc.
আপনি যদি সার্ভার অন্যথায় কাজটি প্রতিস্থাপন করতে AJAX ব্যবহার করে থাকেন তবে হ্যাঁ যা সার্ভারের সম্পাদনাকে উন্নত করবে। যাইহোক, আপনি জিনিসগুলি এমনভাবে নকশা করেছেন যাতে সার্ভারটি এখনও ঠিক ততটাই করছে এবং এখন এজেএক্সের সাথে যা ঘটছে তা সার্ভার ইতিমধ্যে যা করছে তার শীর্ষে।
বেশিরভাগ ক্ষেত্রে এটি ইউআই স্টাফ সম্পর্কে, কারণ আপনার ক্লায়েন্ট-সাইডে অন্য কিছু করা উচিত নয়। মূলত, সার্ভারটি ইউআই সমর্থন করার জন্য যা কিছু করছে (উদাহরণস্বরূপ, ব্যবহারকারীর ইনপুট প্রতিক্রিয়া হিসাবে পৃষ্ঠাটি পুনরায় লোড করুন) এর পরিবর্তে জাভাস্ক্রিপ্ট করুন।
যদি এইচটিএমএল রেন্ডারিং আপনার অ্যাপ্লিকেশন সার্ভারের পারফরম্যান্স প্রোফাইলের একটি বিশাল অংশ হয়, তবে ক্লায়েন্টের কাছে এইচটিএমএল রেন্ডারিং অ্যাপ্লিকেশন সার্ভারে পারফরম্যান্সের জয় হতে পারে।
তবে, যদি এইচটিএমএল রেন্ডারিং আপনার অ্যাপ্লিকেশন সার্ভারের পারফরম্যান্স প্রোফাইলের একটি ছোট অংশ হয়, তবে আরও অনুরোধগুলি সাধারণত স্ট্যাকের মাধ্যমে আরও বেশি ট্রিপ, আরও অনুসন্ধান, অ্যাপ্লিকেশন সার্ভারের আরও অনেক কিছুই বোঝায়, একটি কার্যকারিতা ক্ষতি।
অবশ্যই, আপনার নির্দিষ্ট ক্ষেত্রে জানার একমাত্র উপায় হ'ল এটি ব্যবহার করে।
আপনার সমাধানটি কার্যকর করার সেরা উপায়টি আপনাকে বিবেচনা করতে হবে। একটি সাধারণ অ ডায়নামিক ফর্মের এজাক্স প্রয়োজন হয় না এবং এটি যুক্ত করা পারফিউমেন্সের ক্ষতি করতে পারে। আপনার সমস্যাটি যদি খারাপ প্রশ্ন থাকে তবে বিশ্বের সমস্ত এজাক্স অপ্টিমাইজেশন আপনাকে এমন একটি পারফরম্যান্স বাড়িয়ে তুলবে না যা গ্রহণযোগ্য হবে।
যদি আপনার সার্ভারটি অতিরিক্ত কাজ করে থাকে তবে আপনাকে কেন তা খুঁজে বের করতে হবে।
আপনি যদি প্রচুর হিট পেতে থাকেন তবে এজ্যাক্স সেই সমস্যাটি ঠিক করতে চলেছে না আপনার আরও ক্ষমতা প্রয়োজন। এজাক্স যুক্ত করা আপনার সার্ভারকে পরিচালনা করার অনুরোধের সংখ্যা বাড়িয়ে তুলবে।
আপনার যদি জটিল পৃষ্ঠা থাকে তবে আপনার সার্ভারের বোঝা কমাতে আপনি ক্লায়েন্টের পক্ষে কিছু করতে পারেন কিনা তা দেখতে হবে। যদি আপনার পৃষ্ঠাটি গতিশীল হয় তবে সত্যিকার অর্থে কোনও সীমাবদ্ধ ডেটা প্যাকেজ ক্যাচিং রয়েছে যা ক্লায়েন্টের পার্শ্ব সামঞ্জস্যের জন্য আরও ভাল অর্থ প্রদান করতে পারে।
এবং কিছু সময় অ্যাজাক্স সাহায্য করবে। আপনার যখন ডায়নামিক ডেটা অজ্যাক্স সহ জটিল ফর্মগুলি থাকে তখন দিনটি জয়ী হয়। তবে আপনি যদি প্রশ্নগুলি জটিল হয়ে থাকেন এবং চালাতে দীর্ঘ সময় নেন তবে এজ্যাক্স এখনও আপনার সমস্যার সমাধান করবে না।