2010-02-01 20 views
16

परिदृश्य पर विचार करें:जब मैं ब्राउज़र बैक बटन दबाता हूं तो क्या होता है?

  1. मैं ASP.NET का उपयोग करके बनाया एक वेबसाइट के एक पृष्ठ पर गए। पृष्ठ ASP.NET सर्वर नियंत्रण वाले एक साधारण एएसपीएक्स पृष्ठ है।

  2. मैं एक लिंक जो मुझे एक ही वेबसाइट पर किसी अन्य पेज तक ले जाता है पर क्लिक किया।

  3. मैंने ब्राउज़र के बैक बटन पर क्लिक किया।

प्रश्न: पेज के जीवन चक्र के मामले में क्या होता है? क्या सभी घटनाएं होती हैं या ब्राउज़र बिना किसी अनुरोध किए पृष्ठ के कैश किए गए संस्करण को प्रदर्शित करता है?

उत्तर

15

मुझे लगता है कि सबसे अच्छा जवाब है: यह ब्राउज़र पर निर्भर करता है, विशेष रूप से एक पोस्ट/पोस्टबैक के बाद।

पुराने ब्राउज़र "पृष्ठ में पोस्ट डेटा शामिल है जो पुनः सबमिट किया जाएगा" के प्रभाव के लिए एक पुष्टिकरण संवाद पॉप अप करता था, और आप या तो आगे बढ़ सकते हैं (पुनः सबमिट कर सकते हैं) या रद्द कर सकते हैं। के बाद से सब कुछ है कि ASP.NET WebForms में होता है FORM तत्व (ViewState, घटनाओं, आदि) का हिस्सा है, इस कारण होगा पूरे जीवन चक्र दोहराया जाना।

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

... यह है जब तक आप कैश-कंट्रोल हेडर ओवरराइड करते हैं और ब्राउज़र को कैश में पृष्ठ को स्टोर न करने के लिए बाध्य करते हैं। जाहिर है, उस स्थिति में, इसे कैश से पुनर्प्राप्त नहीं किया जा सकता है, इसलिए आमतौर पर इसे पुनः सबमिट किया जा सकता है। लेकिन, फिर से, यह ब्राउज़र पर निर्भर करता है - उदाहरण के लिए, कुछ ब्राउज़र SSL पर पुनः प्रविष्टि अनुमति नहीं दी जाएगी, ताकि अगर प्रयोग में प्रोटोकॉल है तो उपयोगकर्ता सिर्फ एक संदेश कह रही है कि पेज समाप्त हो गया है देखेंगे/नहीं किया जा सकता दिखाया गया है।

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

+0

मैं हारून के जवाब से सहमत हूं। मैं कोई भी कोड लिखने की कोशिश नहीं करता जो मानता है कि 'बैक' बटन सभी ब्राउज़रों में एक निश्चित तरीके से व्यवहार करेगा। – jessegavin

+0

मुझे लगता है कि आप नियंत्रण का उपयोग कर उसी पृष्ठ को पोस्ट-बैकिंग का एक अलग परिदृश्य मानते हैं और फिर बैक बटन दबाते हैं ... क्या मैं सही हूँ? – Manish

+0

@ मिशनी: क्या मायने रखता है कि उपयोगकर्ता के * वर्तमान * पृष्ठ में 'POST' डेटा है या नहीं, लेकिन पिछले * पृष्ठ (जिसे बैक बटन उन्हें ले जाएगा) चाहे वह' POST' डेटा था या नहीं) । इसमें दोनों परिदृश्य शामिल हैं - एक पोस्टबैक से वापस जा रहे हैं, और एक नए पृष्ठ से वापस जा रहे हैं जब पिछले पृष्ठ में पोस्टबैक था (या सिर्फ 'POST')। – Aaronaught

0

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

0
जा रहा है

पृष्ठ कैश से प्रदर्शित किया जाएगा।

+0

तो अगर मैं Response.Cache.SetCacheability (HttpCacheability.NoCache) सेट है, वापस मार ब्राउज़र जारी करने के लिए कारण होगा एक हो जाओ प्रवीण पृष्ठ के लिए अनुरोध, या शायद एक पोस्टबैक अगर वह उपयोगकर्ता की आखिरी कार्रवाई थी? – AaronLS

+0

हाँ यदि आपके पास Response.Cache है तो यह पोस्टबैक होगा।SetCacheability (NoCache) सेट है, लेकिन कुछ पृष्ठों के लिए आप एक ही सामग्री देखेंगे। Response.Cache.SetCacheability (HttpCacheability.NoCache) का उपयोग करने का प्रयास करें; Response.Cache.SetExpires (डेटटाइम.अब-नया टाइमस्पैन (1,0,0)); Response.Cache.SetLastModified (DateTime.अब); Response.Cache.SetAllowResponseInBrowserHistory (झूठा); – Ravia

+0

मुझे लगता है कि आपको पृष्ठ के बजाय "पृष्ठ समाप्त हो गया" नोटिस मिलेगा, लेकिन मुझे लगता है कि यह अभी भी ब्राउज़र पर निर्भर करता है। – Codesleuth

1

हम भी इस तरह की समस्या को हल करने

Response.ExpiresAbsolute = DateTime.Parse("1/1/1980"); 
Response.AddHeader("cache-control", "no-store, must-revalidate, private"); 
Response.AddHeader("Pragma", "no-cache"); 

की कोशिश की है

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