Website এর First Byte Reading Time কিংবা সার্ভার রিসপন্স টাইম সম্পর্কে জানুন !
অনেকেই মনে করেন সাইটের first byte reading টাইম বেশি মানে সার্ভার খারাপ, ব্যাপার টা মোটেও তা নয় । বরং কোনো কিছুকে খারাপ বলার পূর্বে আমাদের জানা উচিত এটা কি এবং কেনো সাইটের Time To First Byte সময় বেশি হয় । আমি বিশ্বাস করি আজকের এই লেখা পড়ার পর আপনাদের এই ভ্রান্ত ধারনা দূর হবে ।
TTFB কি?
আপনি যখন কোনো সাইটে প্রবেশ করেন তখন আপনার ব্রাউজার একটা http রিকোয়েস্ট পাঠায় সাইটটি যে সার্ভারে হোস্ট করা আছে তাতে, আর এই রিকোয়েস্ট পাবার পর সার্ভার আপনার সা্ইটের কন্টেন্ট কে প্রসেস করে তথ্য কে ফেরত পাঠায় যা ব্রাউজারে দেখা যায়, এখানে সার্ভার এ রিকোয়েস্ট পাঠানোর পর সার্ভার থেকে প্রথম যে ফিরতি তথ্য পাঠানো হয় তার মধ্যবর্তী সময়ই হলো TTFB
এটাকে সার্ভারের response টাইম হিসাবেও অনেকে কাউন্ট করে থাকে ।
এটা কি সত্যিই সার্ভারের response টাইম হিসাবে গ্রহন যোগ্য ?
মোটেও নয় ! কেনো? কারন টা কিন্তু সংগাতেই আছে, সহজ ভাবে বলছি
TTFB = Socket Connection Time + User থেকে সার্ভারে ডাটা প্রেরনের সময় + সার্ভার থেকে ইউজারকে ফিরতি রিপ্লাই পাঠানো সময় ।
এবার তাহলে ভাবুন তো এটা কিভাবে সার্ভারের রিসপন্স টাইম হয় ! কারন ধরুন, সকেট কানেকশন টাইম ১০ মিলিসেকেন্ড, যে ইউজার এর রিকোয়েস্ট পাঠাতে ৫ সেকেন্ড টাইম লাগলো তার নেট স্লো বলে কিংবা রেস্ট্রিকটেড জোনে অবস্থান করছে বলে !, আর সার্ভার ১০ মিলি সেকেন্ডে রিসপন্স বা ফার্স্ট বাইট প্রেরন করলো সে ক্ষেত্রে ব্যাপার টি কি ঘটবে ! সার্ভার রিস্পন্স টাইম দেখাবে ৫.২০ সেকেন্ড !!
মূলত এটিই হয় ! অধিকাংশ টুল কিংবা TTFB মেজারমেন্ট করে এমন সাইটই ইউজার থেকে সার্ভারের Latency কে নেগলেট করে যার ফলে ভুল তথ্য এখানে প্রদর্শিত হয় ।
এররকম সাইট: webpagetest.com, gomez ইত্যাদি ।
এর কারন এরা মুলত http response ক্যালকুলেট করে ।
কি কারনে সাইটের TTFB বেশি হতে পারে?
১. টেস্ট করা হচ্ছে যে সার্ভার/সাইট/টুল থেকে তার থাকে টেস্টিং সার্ভারের দূরত্ব বেশি এবং এই দূরত্বকে নেগলেট করা ।
২. সার্ভারে GZib Compression Enable থাকলে
৩. সার্ভারে ক্যাশিং সিস্টেম চালু থাকলে
৪. আপনার স্ক্রিপ্টের প্রোসেসিং টাইম বেশী/সাইজ বেশী হলে ।
এবার জাদু দেখাবো আপনাদের সত্যি বলছি :
টেস্টিং সার্ভার: server27.greenweb.com.bd
টেস্টিং সাইট ১:https://gwtestbd.cf
এটা দেখুন: https://www.webpagetest.org/result/171004_1G_875d3983f6cc48fe31e23b5667764323/
উপরের রেজাল্টে দেখাচ্ছে First Byte Time perfect আছে এবং ম্যাক্সিমাম স্কোর (A) পেয়েছে ! আমরা এটা আমেরিকা থেকে টেস্ট করেছি ।
এবার একই সাইট কে আমরা ইন্ডিয়া থেকে টেস্ট করলাম:
রেজাল্ট: https://www.webpagetest.org/result/171004_QA_524780ee2211bfc86cf10e4d03b7916b/
এবার কি দেখলেন !! Score F মানে ফেল !! একই সার্ভার, একই সাইট দুই রকম রেজাল্ট কেনো ? কারন লোকেশন আলাদা ! মানে টেস্ট কারীর লোকেশনের উপর TTFB নির্ভর করে !
তাহলে ভাই আপনি শুধু শুধু কোনো একটা সার্ভার কে দোষারোপ দিবেন যদি আপনার নিজের নেট কানেকশন এ সমস্যা থাকে কিংবা আপনার সার্ভারের থেকে অনেক দূরে অবস্থান করেন ? কিংবা আপনার নেট কানেকশন স্টাবল না হয়?
এতো গেলো একটা দিক না খেলা শেষ হয়নি এখনো ... সবে শুরু :
এটা দেখুন: https://www.webpagetest.org/result/171004_ER_1da2a3afcf4f5c635b50bb046cc2a1c4/
প্রথমবার আমরা আমেরিকা থেকে টেস্ট করেছিলাম, এবারও করলাম । কিন্তু প্রথম বার রেজাল্টে স্কোর A এবার F ! কোনো?
কারন: এবার আমরা যে সাইট লোড করেছি এটার সাইজ বড়, এটা ডাইনামিক সাইট ওয়ার্ডপ্রেসে বানানো । আগের বার যেটা টেস্ট করি স্ট্যাটিক সাইট । ফলে এবারের সাইট প্রদর্শন হবার আগে সাইটের কনটেন্ট, লজিক সার্ভার প্রসেস করে আগে কিন্তু আগের বার এটা করেনি কারন আগের টা HTML এ বানানো । যেকারনে একই কনফিগারেশন, একই লোকেশনে, একই সার্ভারে থাকা দুইটি সাইটের TTFB আলাদা
https://www.webpagetest.org/result/171004_ND_caeb5985cc116492bb24360c115dd831/
কি বুঝলেন পেজ সাইজ/কনটেন্টের উপরও এটা নির্ভর করে তারমানে !
আরো আছে ভাই, ধরুন আপনার স্ক্রিপ্টে ৫০০ টা পিএইচপি ফাংশন এক্সিকিউট হবার পর ফাস্ট বাইট কিংবা ফার্স্ট লেখা উঠে আর আমার স্ক্রিপ্টে ১ টি ফাংশন রান হয়েই ফার্স্ট বাইট সেন্ড করে এক্ষেত্রে আপনার TTFB আমার থেকে বেশি হবে । কারন আপনার First Byte Reading এর জন্য সার্ভার কে বেশি তথ্য বা ডাটা Analysis করতে হয়েছে । সুতরাং সময়ও বেশী লেগেছে !
এরপরও বলবেন TTFB বেশি বলে এটা সার্ভারের সমস্যা ? বলতে পারেন, পাগলে কিনা বলে ;)
এবার আসা যাক, Gzib এর ব্যাপারে । Gzib হলো compress করার একটি পদ্ধতি, আপনার সাইটের সাইজ যদি ৩ এম্বি হয় তবে অনেক ক্ষেত্রে এটা 200-300 কেবি তে কম্প্রেস করে প্রদর্শন করতে পারে । অনেক টা Zip compress করার মতো, এটি সাইটের পেজ সাইজ কমায় সাইটের CSS, image এবং অন্যান্য জিনিস কে কম্প্রেস করে । যেমন:
https://smallseotools.com/check-gzip-compression/
এই সাইটে যান, এরপর https://gwtestbd.cf enter a url বক্সে লিখে সাবমিট বাটনে চাপ দিন । দেখবেন দেখাবে,
Wow! It's GZIP Enabled.
Domain Name | https://gwtestbd.cf |
Compressed size | 2890 |
Uncompressed size | 17053 |
মানে Gzib Compression Enabled থাকায় এইপেজের সাইজ ৮৩.০৫% কমেছে !! অবিশ্বাস্য ব্যাপার কিন্তু !! বাস্তবেও তাই হয়, এবার সহজ একটা হিসাব করুন: ধরুন একটা পেজের মুল সাইজ ৫ এম্বি, আপনার পিসি থেকে ওটা আগে লোড নিবে নাকি একটি পেজের সাইজ ৬০০ কেবি সেটা আগে লোড নিবে? তো এই Gzib Compression যদি চালু থাকে প্রতিটা সাইট ভিজিটের সময় সার্ভার কম্প্রেস করে পেজ সাইজ কম করবে, আর এটা করতে সার্ভারের কিছু সময় লাগবে যা ঐ TTFB কে ক্যালকুলেট করা হয় ।
এবার নিজেরাই ভাবুন 100-200 ms টাইম বাচাতে গিয়ে এরকম অসাধারন একটা ফাংশন ব্যবহার করা বন্ধ করবেন কিনা । কারন দেখা গেছে শুধু Gzib Compression চালু রাখলেই সার্ভার রিসপন্স টাইম 100-1000 ms পর্যন্ত বাড়তে পারে, কিন্তু লোডিং টাইম ৭০-৮০% কমে । এবার ভাবুন কোনটা বেশি দরকার ।
আর লিখবো না আজকে, আপাতত এটা পড়ুন:
https://blog.cloudflare.com/ttfb-time-to-first-byte-considered-meaningles/
সাইট অপটিমাইজেশনের কোনো Alternative নেই, তবে যারা TTFB ও ভালো চান তারা CDN ব্যবহার করুন ।
লেখাটি লিখতে অনেক সময় লেগেছে অনেক তথ্য ঘাটতে হয়েছে আশা করি আপনাদের কে সঠিক জিনিস টা বুঝাতে পেরেছি । মনে রাখবেন অল্প কিছু MS বাচাতে গিয়ে অনেক অনেক Seconds বাড়ানো বুদ্ধিমানের কাজ না । গুগল যেমন TTFB কে গুরুত্ব দেয় তার থেকে বেশি সাইট লোডিং টাইম, স্পিড এসব কে দেয় । আর এই গুলো সব এক সাথে পেতে চাইলে আপনাকে টাকা খরচ করতে হবে, ভিপিএস এবং সিডিএন ব্যবহার করুন ভালো ফলাফল পাবেন ।
লিখেছেন
মো: জোবায়ের আলম
ফাউন্ডার, গ্রিনওয়েব বাংলাদেশ ।
Mohammad Abdul Aziz (2018-10-17 11:03:36)
Very helpful & Needed post
md al jumman (2017-12-26 16:03:36)
leet detected <3
Leave A Feedback