2009-08-21 14 views
70

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

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

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

धन्यवाद।

+12

में खोले गए बटन को दबाकर दबाया है क्या यह अनुरोध भेजता है या क्या यह पृष्ठ स्थानीय कैश से लोड करता है? जब आप वापस हिट करते हैं तो पहली प्रतिक्रिया में बनाए गए कुकीज़ को भेजा जाता है? आदि – Jimmy

उत्तर

85

आपका वेब ब्राउज़र (, अगर आप करेंगे या सूची) वेब पृष्ठों है कि आप उस खिड़की में आने वाले लोगों की ढेर रहता है। मान लें कि आपका होम पेज 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।कॉम, एक संक्षिप्त उदाहरण के रूप में) जिसमें ब्राउज़ करने के लिए उत्पादों की श्रेणियां और उपश्रेणियां हैं। साइट डिज़ाइनर ने आपको श्रेणियों के माध्यम से नेविगेट करने की अनुमति देने के लिए विंडो के शीर्ष के पास breadcrumbs प्रदान किया है। आप साइट के शीर्ष पृष्ठ पर शुरू करते हैं, हार्डवेयर पर क्लिक करें, फिर मेमोरी। सूची अब इस तरह दिखता है:

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 

साइट संरचना के अनुसार, आप पिछड़े चला गया (ऊपर एक स्तर), लेकिन ब्राउज़र को आप आगे चला गया, क्योंकि आप एक लिंक पर क्लिक किया। जब भी आप किसी लिंक पर क्लिक करते हैं या पता बार में यूआरएल में टाइप करते हैं, तो आप आगे बढ़ रहे हैं जहां तक ​​ब्राउज़र का सवाल है, चाहे वह लिंक आपको उस पृष्ठ पर ले जाए जो आप पहले से ही कर चुके हैं।

अंत में, आप मुख्य साइट पेज (ne.com) पर वापस जाना चाहते हैं। आप ब्रेडक्रंब का उपयोग कर सकते हैं, लेकिन इस बार आप बैक बटन पर क्लिक करते हैं - ऐसा लगता है कि यह आपको एक स्तर ले जाना चाहिए, है ना? लेकिन यह आपको कहाँ ले जाता है?

यह शुरू में कई उपयोगकर्ताओं (अपने आप को शामिल जब मैं वास्तव में यह करने के लिए होता है) है कि यह आप "नीचे" एक स्तर वापस मेमोरी श्रेणी पर ले जाता है, के लिए भ्रामक है। पृष्ठों की सूची को देखते हुए, यह क्यों देखना आसान है:

google.com -> ne.com -> ne.com/hw -> ne.com/hw/mem -> ne.com/hw 
              ^
              | 
             current page 

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

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

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

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

+4

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

+4

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

+0

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

2

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

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

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

+0

ब्राउजर कैश का उपयोग कब करता है और यह अनुरोध कब भेजता है? –

+0

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

-1

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

मुझे लगता है कि इस सवाल का मुद्दा गायब है।

+0

वे शायद बैक बटन को अक्षम करना चाहते हैं - या इसके उपयोग को रोकें। सौभाग्य। –

5

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

1

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

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) 
0

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

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

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

+0

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

0

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

+2

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

संबंधित मुद्दे