मैंने इस प्रश्न के बारे में वेब पर खोज की लेकिन मुझे कुछ नहीं मिला:
बैक बटन का तर्क क्या है? जब हम किसी वेब ब्राउज़र पर बैक बटन दबाते हैं तो क्या हो रहा है?
मैं वास्तव में इसके बारे में अधिक समझना चाहूंगा।
धन्यवाद।
मैंने इस प्रश्न के बारे में वेब पर खोज की लेकिन मुझे कुछ नहीं मिला:
बैक बटन का तर्क क्या है? जब हम किसी वेब ब्राउज़र पर बैक बटन दबाते हैं तो क्या हो रहा है?
मैं वास्तव में इसके बारे में अधिक समझना चाहूंगा।
धन्यवाद।
जवाबों:
आपका वेब ब्राउज़र उन विंडो के वेब पेजों पर एक स्टैक (या सूची, यदि आप होगा) रखता है। मान लीजिए कि आपका होम पेज google.com है और वहां से आप कुछ अन्य वेबसाइटों पर जाते हैं: youtube.com, yahoo.com, और cnn.com। पिछले एक पर जाने पर, सूची इस तरह दिखती है:
google.com -> youtube.com -> yahoo.com -> cnn.com
^
|
current page
जब आप बैक बटन दबाते हैं, तो ब्राउज़र आपको सूची में पिछले पृष्ठ पर वापस ले जाता है, जैसे:
google.com -> youtube.com -> yahoo.com -> cnn.com
^
|
current page
इस बिंदु पर आप youtube.com पर ले जाने के लिए वापस फिर से दबा सकते हैं, या आप फिर से cnn.com पर डालने के लिए फॉरवर्ड दबा सकते हैं। मान लीजिए कि आप दूसरी बार वापस प्रेस करते हैं:
google.com -> youtube.com -> yahoo.com -> cnn.com
^
|
current page
यदि आप अब, abc.com पर जाते हैं, तो सूची इस प्रकार दिखती है:
google.com -> youtube.com -> abc.com
^
|
current page
ध्यान दें कि दोनों yahoo.com और cnn.com सूची से चले गए हैं। ऐसा इसलिए है क्योंकि आपने एक नया मार्ग लिया है। ब्राउज़र केवल उन पृष्ठों की एक सूची रखता है जहाँ आप गए हैं, जहाँ आप अब हैं, न कि आपके द्वारा किए गए प्रत्येक पृष्ठ का इतिहास। आपके द्वारा देखी जा रही साइट की संरचना के बारे में ब्राउज़र को कुछ भी पता नहीं है, जिससे कुछ आश्चर्यजनक व्यवहार हो सकता है।
आप एक शॉपिंग साइट पर हैं (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
केवल बैक बटन का उपयोग करके मुख्य पृष्ठ पर वापस जाने के लिए आपको दो और प्रेस की आवश्यकता होगी, आपको हार्डवेयर श्रेणी में "वापस" और अंत में मुख्य पृष्ठ पर ले जाना होगा। यह हमारे लिए प्रोग्रामरों के लिए बहुत स्पष्ट लगता है कि क्या चल रहा है, लेकिन यह हर समय नियमित उपयोगकर्ताओं से बाहर निकलने पर आश्चर्यचकित करता है क्योंकि उन्हें एहसास नहीं होता है कि ब्राउज़र को उस वेबसाइट के पदानुक्रमित संरचना के बारे में कुछ भी नहीं पता है कि वे किस वेबसाइट पर होते हैं।
क्या यह बहुत अच्छा होगा यदि ब्राउज़र साइट डिजाइनरों को बैक बटन प्रोग्राम करने देंगे जो कि अब जो कुछ भी करता है उसके बजाय स्पष्ट चीज़ (आपको एक स्तर ऊपर ले जाना) करने के लिए है?
संपादित करें: एक टिप्पणीकार ने पूछा कि क्या ब्राउज़र पृष्ठ को फिर से लोड करता है या इसे अपने स्थानीय कैश से प्रदर्शित करता है।
उत्तर है, यह निर्भर करता है। साइट डिज़ाइनर निर्दिष्ट कर सकते हैं कि ब्राउज़र को पृष्ठ को कैश करना चाहिए या नहीं। गैर-कैश्ड के रूप में सेट किए गए पृष्ठों के लिए, जब आप बैक पर जाते हैं, तो ब्राउज़र उस पेज को सर्वर से पुनः लोड करता है, जैसे कि यह पहली बार था। कैश्ड पृष्ठों के लिए, ब्राउज़र इसे कैश से बाहर प्रदर्शित करता है, जो बहुत तेज़ है।
मैं अपने अंतिम अनुरोध को फिर से जारी करने के बारे में सोचना पसंद करता हूं। यदि आपने एक साधारण GET का प्रदर्शन किया है, तो संभवतः यह उसी चीज़ को लौटाएगा जो उसने पिछली बार (माइनस डायनामिक कंटेंट) किया था। यदि आपने एक POST किया था, तो आप सर्वर को फ़ॉर्म (पुष्टि के बाद) फिर से सबमिट करने जा रहे हैं।
मूल विचार अंतिम पृष्ठ या तार्किक साइट विभाजन पर वापस लौटना है।
जीमेल को देखकर आप देखेंगे कि यदि आप कोई खोज करते हैं और संदेश पर क्लिक करते हैं तो बैक बटन दबाएं यह आपको उस खोज पर वापस ले जाएगा जो आपने किया था।
जब आप इसे अधिकांश ब्राउज़रों में क्लिक करते हैं तो यह अंतिम 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)
एक डिवोल्पर के रूप में, आपको यह सुनिश्चित करना चाहिए कि आपका वेबप कोई भी काम नहीं करता है कि ब्राउज़र बैक बटन कैसे संभालता है :-) क्या यह अनुरोध को फिर से भेजता है? क्या नया अनुरोध पुराने के समान है, या यह किसी भी तरह से अलग है? क्या ब्राउज़र उपयोगकर्ता को पुन: POST की पुष्टि करने के लिए कहेगा? पृष्ठ के किन तत्वों को फिर से अनुरोध किया जाएगा और कैश से क्या लोड किया जाएगा? क्या ब्राउज़र मेरे कैश-कंट्रोल हेडर का सम्मान करेगा?
इन सवालों के जवाब मेक, एक ब्राउज़र और उपयोगकर्ता सेटिंग्स के संस्करण पर निर्भर करते हैं। आप सॉफ्टवेयर डिजाइन करें ताकि यह सब इतना मायने नहीं रखता।
बहुत सीधे जवाब के लिए क्षमा करें, लेकिन यहाँ पहले से ही कुछ सीधे जवाब हैं।
एक ब्राउज़र हमेशा अपने याद रखने के लिए पृष्ठों को संग्रहीत करता है और जब हम बैक बटन दबाते हैं तो यह पिछले पृष्ठ के लिए सर्वर पर अनुरोध नहीं भेजता है, इसके बजाय यह केवल अपने कैश को देखता है जहां उसने पृष्ठों को संग्रहीत किया है और यह LIFO नियम का पालन करता है यही कारण है कि उस पेज को पहले बैक बटन दबाने पर दें जो हमने लास्ट में खोला था
ब्राउज़र वर्तमान के पहले अंतिम देखे गए पृष्ठ को लोड करता है, और फिर किसी भी पुनर्निर्देशन का पालन करता है जो हो सकता है?
मुझे सवाल का बिंदु याद आ रहा है।