আমি এই প্রশ্নটি সম্পর্কে ওয়েবে অনুসন্ধান করেছি কিন্তু আমি কিছুই পাইনি:
পিছনের বোতামটির যুক্তি কী? ওয়েব ব্রাউজারে আমরা পিছনের বোতামটি চাপলে কী ঘটছে?
আমি সত্যিই সে সম্পর্কে আরও জানতে চাই।
ধন্যবাদ.
আমি এই প্রশ্নটি সম্পর্কে ওয়েবে অনুসন্ধান করেছি কিন্তু আমি কিছুই পাইনি:
পিছনের বোতামটির যুক্তি কী? ওয়েব ব্রাউজারে আমরা পিছনের বোতামটি চাপলে কী ঘটছে?
আমি সত্যিই সে সম্পর্কে আরও জানতে চাই।
ধন্যবাদ.
উত্তর:
আপনার ওয়েব ব্রাউজারটি আপনি সেই উইন্ডোটিতে যে ওয়েব পৃষ্ঠাগুলি পরিদর্শন করেছেন সেগুলির একটি স্ট্যাক (বা আপনি যদি চান তবে তালিকা) রাখে। ধরা যাক আপনার হোম পেজটি গুগল.কম এবং সেখান থেকে আপনি কয়েকটি অন্যান্য ওয়েবসাইট: ইউটিউব ডটকম, ইয়াহু ডট কম, এবং সিএনএন.কম দেখুন। শেষটি দেখার পরে, তালিকাটি এরকম দেখাচ্ছে:
google.com -> youtube.com -> yahoo.com -> cnn.com
^
|
current page
আপনি পিছনে বোতাম টিপলে, ব্রাউজারটি আপনাকে তালিকার আগের পৃষ্ঠায় ফিরিয়ে নিয়ে যায়:
google.com -> youtube.com -> yahoo.com -> cnn.com
^
|
current page
এই মুহুর্তে আপনাকে আবার ইউটিউব ডটকম এ নিয়ে যেতে আবার ফিরে টিপতে পারেন, বা আবার সিএনএন.কম এ রাখতে আপনি ফরোয়ার্ড টিপতে পারেন। ধরা যাক আপনি দ্বিতীয়বার পিছনে টিপুন:
google.com -> youtube.com -> yahoo.com -> cnn.com
^
|
current page
আপনি যদি এখন যান, বলুন, abc.com, তালিকাটি দেখতে দেখতে এইরকম পরিবর্তন হয়:
google.com -> youtube.com -> abc.com
^
|
current page
নোট করুন যে ইয়াহু.কম এবং সিএনএন.কম উভয়ই তালিকা থেকে চলে গেছে। কারণ আপনি একটি নতুন রুট নিয়েছেন। আপনি এখন যেখানে ছিলেন সেখানে পৌঁছানোর জন্য আপনি যে পৃষ্ঠাগুলিতে পরিদর্শন করেছেন সেগুলি ব্রাউজার কেবলমাত্র একটি তালিকা বজায় রাখে, আপনি যে কোনও পৃষ্ঠায় গেছেন সেটির ইতিহাস নয়। আপনি যে সাইটটি পরিদর্শন করেছেন সেটির কাঠামো সম্পর্কে ব্রাউজারটিও কিছু জানে না, যা কিছু অবাক করা আচরণ করতে পারে।
আপনি একটি শপিং সাইটে (ne.com, একটি সংক্ষিপ্ত উদাহরণ হিসাবে) যা ব্রাউজ করার জন্য পণ্যগুলির বিভাগ এবং উপশ্রেণীশ্রেণীতে রয়েছে। সাইট ডিজাইনার বিবেচনা করে উইন্ডোটির শীর্ষের কাছে ব্রেডক্র্যাম্বগুলি সরবরাহ করেছে যাতে আপনাকে বিভাগগুলির মাধ্যমে চলাচল করতে পারে। আপনি সাইটের শীর্ষ পৃষ্ঠায় শুরু করুন, হার্ডওয়্যার ক্লিক করুন, তারপরে মেমোরি। তালিকাটি এখন এর মতো দেখাচ্ছে:
google.com -> ne.com -> ne.com/hw -> ne.com/hw/mem
^
|
current page
আপনি হার্ডওয়্যার বিভাগে ফিরে যেতে চান, সুতরাং আপনি পিছনের বোতামটি ব্যবহার না করে পিতৃ বিভাগে যেতে ব্রেডক্রাম্বগুলি ব্যবহার করেন। এখন ব্রাউজারের তালিকাটি এর মতো দেখাচ্ছে:
google.com -> ne.com -> ne.com/hw -> ne.com/hw/mem -> ne.com/hw
^
|
current page
সাইটের কাঠামো অনুসারে, আপনি পিছনে চলে গিয়েছিলেন (একটি স্তর উপরে), তবে ব্রাউজারে আপনি এগিয়ে গিয়েছিলেন কারণ আপনি একটি লিঙ্কে ক্লিক করেছেন। যে কোনও সময় আপনি যখন কোনও লিঙ্কে ক্লিক করেন বা ঠিকানা বারে কোনও URL টাইপ করেন, আপনি ব্রাউজারের সাথে সম্পর্কিত যতদূর এগিয়ে চলেছেন, সেই লিঙ্কটি আপনাকে এমন কোনও পৃষ্ঠাতে নিয়ে যায় বা না যা আপনি ইতিমধ্যে গেছেন।
শেষ অবধি, আপনি মূল সাইট পৃষ্ঠাতে (ne.com) ফিরে যেতে চান। আপনি ব্রেডক্র্যামব ব্যবহার করতে পারতেন, কিন্তু এবার আপনি পিছনে বোতামটি ক্লিক করেছেন - এটা স্পষ্টতই মনে হয় যে এটি আপনাকে এক স্তর পর্যন্ত নিয়েছে, তাই না? তবে কোথায় লাগে?
এটি প্রাথমিকভাবে অনেক ব্যবহারকারীর কাছে বিভ্রান্ত হয় (আমি নিজেও অন্তর্ভুক্ত ছিলাম, যখন আমি ঠিক এটি করি) তবে এটি আপনাকে মেমরি বিভাগে ফিরে "স্তর" নেবে। পৃষ্ঠাগুলির তালিকার দিকে লক্ষ্য করা, কেন সহজে তা সহজেই দেখা যায়:
google.com -> ne.com -> ne.com/hw -> ne.com/hw/mem -> ne.com/hw
^
|
current page
কেবল পিছনের বোতামটি ব্যবহার করে মূল পৃষ্ঠায় ফিরে যেতে আরও দুটি প্রেসের দরকার পড়ে, আপনাকে হার্ডওয়্যার বিভাগে এবং "অবশেষে" মূল পৃষ্ঠায় নিয়ে যেতে হবে। এটি আমাদের প্রোগ্রামারদের কাছে কী ঘটছে তা এতটাই সুস্পষ্ট বলে মনে হয়, তবে নিয়মিত ব্যবহারকারীর বাইরে থাকা হ্যাকটি সারাক্ষণ আশ্চর্য করে কারণ তারা বুঝতে পারে না যে ব্রাউজারটি যে ওয়েবসাইটেই তা ঘটবে সেটির শ্রেণিবদ্ধ কাঠামো সম্পর্কে কিছুই জানে না।
ব্রাউজারগুলি এখন যা কিছু করে না তার পরিবর্তে সাইট ডিজাইনারদের ব্যাক বোতামটি স্পষ্ট কাজটি করতে (আপনাকে একটি স্তর অবলম্বন করতে) অনুমতি দেয় তবে কি দুর্দান্ত লাগবে?
সম্পাদনা: একজন মন্তব্যকারী জিজ্ঞাসা করেছিল যে ব্রাউজারটি পৃষ্ঠাটি পুনরায় লোড করে বা কেবল স্থানীয় স্থানীয় ক্যাশে থেকে এটি প্রদর্শন করে।
উত্তরটি হল, এটা নির্ভরশীল. সাইট ডিজাইনাররা ব্রাউজারটি পৃষ্ঠাটি ক্যাশে করা উচিত কিনা তা নির্দিষ্ট করতে পারে। নন-ক্যাশেড হিসাবে সেট করা পৃষ্ঠাগুলির জন্য, আপনি পিছনে চাপলে ব্রাউজারটি সার্ভার থেকে পৃষ্ঠাটি পুনরায় লোড করে, মনে হয় এটি প্রথমবার আপনি এটি দেখার জন্য ছিলেন। ক্যাশেড পৃষ্ঠাগুলির জন্য, ব্রাউজারটি এটি ক্যাশে থেকে প্রদর্শন করে, যা অনেক দ্রুত।
মূল ধারণাটি শেষ পৃষ্ঠা বা লজিক্যাল সাইট বিভাগে ফিরে আসা।
জিমেইলের দিকে তাকিয়ে আপনি দেখতে পাবেন যে আপনি কোনও অনুসন্ধান করেন এবং কোনও বার্তা ক্লিক করেন তারপরে পিছনের বোতামটি চাপুন এটি আপনাকে যে সন্ধানে নিয়ে গেছে তা আপনাকে ফিরিয়ে আনবে।
আপনি যখন এটি বেশিরভাগ ব্রাউজারগুলিতে ক্লিক করেন এটি হয় সর্বশেষ http অনুরোধটি পুনরায় পাঠাবে বা ব্রাউজারের সাইটগুলিকে ক্যাশে দিলে একটি ক্যাশে লোড করবে।
আমি মনে করি এটি ব্যাখ্যা করার সবচেয়ে সহজ উপায় হল সিউডোকোডে:
class Page:
String url, ...
Page previous, next # implements a doubly-linked list
class History:
Page current # current page
void back():
if current.previous == null:
return
current = current.previous
refresh()
void forward():
if current.next == null:
return
current = current.next
refresh()
void loadPage(Page newPage):
newPage.previous = current
current.next = newPage # remove all the future pages
current = current.next
display(current)
ডিভলপার হিসাবে, আপনার ব্রাউজারটি পিছনে বোতামটি কীভাবে পরিচালনা করে তা বিবেচনা করেই আপনার ওয়েব অ্যাপ্লিকেশনটি কাজ করে তা নিশ্চিত করা উচিত :-) এটি কী অনুরোধটি পুনরায় পাঠায়? নতুন অনুরোধটি কি পুরানোটির মতোই, নাকি এটি কোনও উপায়ে আলাদা? ব্রাউজার ব্যবহারকারীকে পুনরায় পোস্টের বিষয়টি নিশ্চিত করতে বলবে? পৃষ্ঠার কোন উপাদানগুলিকে পুনরায় অনুরোধ করা হবে এবং ক্যাশে থেকে লোড করা হবে? ব্রাউজার কি আমার ক্যাশে-নিয়ন্ত্রণ শিরোনামকে সম্মান করবে?
এই প্রশ্নের উত্তরগুলি মেক, ব্রাউজারের সংস্করণ এবং ব্যবহারকারীর সেটিংসের উপর নির্ভর করে। আপনার সফ্টওয়্যারটি ডিজাইন করুন যাতে এটি এতোটুকু গুরুত্ব দেয় না।
খুব সরাসরি উত্তর না দেওয়ার জন্য দুঃখিত, তবে ইতিমধ্যে এখানে কিছু সরল উত্তর রয়েছে।
ব্রাউজারটি সর্বদা স্মরণ রাখার জন্য পৃষ্ঠাগুলি সংরক্ষণ করে এবং যখন আমরা পিছনের বোতামটি টিপतो তখন এটি পূর্ববর্তী পৃষ্ঠার জন্য অনুরোধটি সার্ভারে প্রেরণ করে না পরিবর্তে এটি কেবল এটির ক্যাশেটি দেখতে পাবে যেখানে এটি পৃষ্ঠাগুলি সঞ্চিত করেছিল এবং এটি লাইফোর নিয়মটি অনুসরণ করে তাই এটি আমরা শেষটি যেটি খুললাম পিছনে বোতাম টিপতে প্রথমে সেই পৃষ্ঠাটি দিন
ব্রাউজারটি বর্তমানের আগে দেখা শেষ পৃষ্ঠাটি লোড করে এবং তারপরে ঘটে যাওয়া কোনও পুনঃনির্দেশ অনুসরণ করে?
আমি একধরনের প্রশ্নের পয়েন্টটি মিস করছি বলে মনে হচ্ছে।