वेब ब्राउजर में बैक बटन कैसे काम करता है?


84

मैंने इस प्रश्न के बारे में वेब पर खोज की लेकिन मुझे कुछ नहीं मिला:

बैक बटन का तर्क क्या है? जब हम किसी वेब ब्राउज़र पर बैक बटन दबाते हैं तो क्या हो रहा है?

मैं वास्तव में इसके बारे में अधिक समझना चाहूंगा।

धन्यवाद।


14
क्या यह अनुरोध को रद्द करता है या क्या यह स्थानीय कैश से पृष्ठ को लोड करता है? क्या कुकीज जो पहली प्रतिक्रिया में बनाई गई थीं, आपको वापस आने पर भेज दी जाती हैं? आदि
जिमी

जवाबों:


99

आपका वेब ब्राउज़र उन विंडो के वेब पेजों पर एक स्टैक (या सूची, यदि आप होगा) रखता है। मान लीजिए कि आपका होम पेज 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

केवल बैक बटन का उपयोग करके मुख्य पृष्ठ पर वापस जाने के लिए आपको दो और प्रेस की आवश्यकता होगी, आपको हार्डवेयर श्रेणी में "वापस" और अंत में मुख्य पृष्ठ पर ले जाना होगा। यह हमारे लिए प्रोग्रामरों के लिए बहुत स्पष्ट लगता है कि क्या चल रहा है, लेकिन यह हर समय नियमित उपयोगकर्ताओं से बाहर निकलने पर आश्चर्यचकित करता है क्योंकि उन्हें एहसास नहीं होता है कि ब्राउज़र को उस वेबसाइट के पदानुक्रमित संरचना के बारे में कुछ भी नहीं पता है कि वे किस वेबसाइट पर होते हैं।

क्या यह बहुत अच्छा होगा यदि ब्राउज़र साइट डिजाइनरों को बैक बटन प्रोग्राम करने देंगे जो कि अब जो कुछ भी करता है उसके बजाय स्पष्ट चीज़ (आपको एक स्तर ऊपर ले जाना) करने के लिए है?

संपादित करें: एक टिप्पणीकार ने पूछा कि क्या ब्राउज़र पृष्ठ को फिर से लोड करता है या इसे अपने स्थानीय कैश से प्रदर्शित करता है।

उत्तर है, यह निर्भर करता है। साइट डिज़ाइनर निर्दिष्ट कर सकते हैं कि ब्राउज़र को पृष्ठ को कैश करना चाहिए या नहीं। गैर-कैश्ड के रूप में सेट किए गए पृष्ठों के लिए, जब आप बैक पर जाते हैं, तो ब्राउज़र उस पेज को सर्वर से पुनः लोड करता है, जैसे कि यह पहली बार था। कैश्ड पृष्ठों के लिए, ब्राउज़र इसे कैश से बाहर प्रदर्शित करता है, जो बहुत तेज़ है।


5
जब ब्राउज़र कैश में दिख रहा है, तो क्या यह सर्वर प्रतिक्रिया के हेडर में समाप्ति तिथि की जांच करता है? मुझे लगता है कि यदि पृष्ठ समाप्त हो गया था, तो ब्राउज़र उसी क्वेरी को वापस भेज देगा, नहीं? बैक बटन के संबंध में क्या मिलता है और पोस्ट उसी तरह से संभाला जाता है? आपके शानदार जवाब के लिए धन्यवाद।
पियरे थिबॉल्ट

5
पहला सवाल: हां, यह सही है। यदि पृष्ठ समाप्त हो गया है, तो ब्राउज़र को उसी URL और POST डेटा का उपयोग करके पृष्ठ का पुनः अनुरोध करना चाहिए। लेकिन POST संचालन के लिए, अधिकांश ब्राउज़र उपयोगकर्ता से पूछते हैं कि क्या वे इसे फिर से भेजना चाहते हैं। मेरा अनुमान है कि POST डेटा को फिर से भेजने से डुप्लिकेट पोस्टिंग, डुप्लिकेट ट्रांजेक्शन, आदि हो सकते हैं। ऐसा होने से रोकने के लिए साइट डिज़ाइनर पर निर्भर है।
बैरी ब्राउन

हां, लेकिन एक पोस्ट के मामले में, मुझे लगता है कि ब्राउज़र केवल उस POST के मामले में पूछेगा जो समाप्त हो गया है। क्या मैं सही हू? क्योंकि जब मैं ASP.net के साथ विकास कर रहा था तो बैक बटन बिना पूछे सर्वर पर फिर से पोस्ट कर रहा था।
पियरे थिबॉल्ट

शायद ब्राउज़र पर निर्भर करता है। मेरा ब्राउज़र (सफारी) हमेशा पूछता है - कम से कम मुझे लगता है कि यह हमेशा पूछ रहा है।
बैरी ब्राउन

मैं सफारी का उपयोग कर रहा था। यह हमेशा नहीं पूछता। यह मेरे द्वारा वर्णित तर्क का अनुसरण करना चाहिए।
पियरे थिबॉल्ट

5

मैं अपने अंतिम अनुरोध को फिर से जारी करने के बारे में सोचना पसंद करता हूं। यदि आपने एक साधारण GET का प्रदर्शन किया है, तो संभवतः यह उसी चीज़ को लौटाएगा जो उसने पिछली बार (माइनस डायनामिक कंटेंट) किया था। यदि आपने एक POST किया था, तो आप सर्वर को फ़ॉर्म (पुष्टि के बाद) फिर से सबमिट करने जा रहे हैं।


2

मूल विचार अंतिम पृष्ठ या तार्किक साइट विभाजन पर वापस लौटना है।

जीमेल को देखकर आप देखेंगे कि यदि आप कोई खोज करते हैं और संदेश पर क्लिक करते हैं तो बैक बटन दबाएं यह आपको उस खोज पर वापस ले जाएगा जो आपने किया था।

जब आप इसे अधिकांश ब्राउज़रों में क्लिक करते हैं तो यह अंतिम http अनुरोध को फिर से भेज देगा या यदि ब्राउज़र कैश करता है तो कैश लोड करेगा।


ब्राउज़र कब कैश का उपयोग करता है और कब यह एक अनुरोध भेजता है?
पियरे थिबॉल्ट

यह ब्राउज़र पर निर्भर करता है और उस बिंदु तक क्या किया गया था। आप अधिकांश ब्राउज़रों को कैश नहीं करने के लिए सेट कर सकते हैं और इसलिए वे हमेशा लोड करेंगे। कैशिंग के लिए एक HTML मेटाटैग है, लेकिन सम्मान जो ब्राउज़र तक है।
बॉबब्रिज

2

मुझे लगता है कि यह समझाने का सबसे आसान तरीका छद्म कोड में है:

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)

1

देखे गए पृष्ठों के इतिहास को स्टैक जैसे रूप में रखा जाता है। जब आप शीर्ष तीन पृष्ठों (ए, बी, सी, उदाहरण के लिए) को "पॉप" करते हैं और फिर एक अलग पेज डी पर जाते हैं, तो आप आगे मारकर फिर से बी नहीं प्राप्त कर सकते हैं।


0

एक डिवोल्पर के रूप में, आपको यह सुनिश्चित करना चाहिए कि आपका वेबप कोई भी काम नहीं करता है कि ब्राउज़र बैक बटन कैसे संभालता है :-) क्या यह अनुरोध को फिर से भेजता है? क्या नया अनुरोध पुराने के समान है, या यह किसी भी तरह से अलग है? क्या ब्राउज़र उपयोगकर्ता को पुन: POST की पुष्टि करने के लिए कहेगा? पृष्ठ के किन तत्वों को फिर से अनुरोध किया जाएगा और कैश से क्या लोड किया जाएगा? क्या ब्राउज़र मेरे कैश-कंट्रोल हेडर का सम्मान करेगा?

इन सवालों के जवाब मेक, एक ब्राउज़र और उपयोगकर्ता सेटिंग्स के संस्करण पर निर्भर करते हैं। आप सॉफ्टवेयर डिजाइन करें ताकि यह सब इतना मायने नहीं रखता।

बहुत सीधे जवाब के लिए क्षमा करें, लेकिन यहाँ पहले से ही कुछ सीधे जवाब हैं।


काश, बैक बटन के सभी संभावित प्रभावों को ध्यान में रखते हुए, जो ज्यादातर डेवलपर्स को पागल करता है, खुद को शामिल करता है।
लुईस

0

एक ब्राउज़र हमेशा अपने याद रखने के लिए पृष्ठों को संग्रहीत करता है और जब हम बैक बटन दबाते हैं तो यह पिछले पृष्ठ के लिए सर्वर पर अनुरोध नहीं भेजता है, इसके बजाय यह केवल अपने कैश को देखता है जहां उसने पृष्ठों को संग्रहीत किया है और यह LIFO नियम का पालन करता है यही कारण है कि उस पेज को पहले बैक बटन दबाने पर दें जो हमने लास्ट में खोला था


2
नहीं, यह काम नहीं करता है! यदि कैश अब मान्य नहीं है, तो यह पृष्ठ को फिर से प्राप्त करने के लिए सर्वर पर वापस अनुरोध भेजता है।
पियरे थिबॉल्ट

-1

ब्राउज़र वर्तमान के पहले अंतिम देखे गए पृष्ठ को लोड करता है, और फिर किसी भी पुनर्निर्देशन का पालन करता है जो हो सकता है?

मुझे सवाल का बिंदु याद आ रहा है।


वे शायद बैक बटन को निष्क्रिय करना चाहते हैं - या इसके उपयोग को रोकते हैं। सौभाग्य।
जॉन हॉवेन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.