AJAX: अक्सर पूछे जाने वाले प्रश्न

यह सामान्य प्रश्न, AJAX क्रॉलिंग के बारे में पूछे जाने वाले सबसे सामान्य प्रश्नों के उत्तर देता है.
मुझे मेरे AJAX के URL में कब _escaped_fragment_ और कब #! का उपयोग करना चाहिए?

आपकी साइट को AJAX क्रॉलिंग योजना स्वीकार करने वाले सभी URL में #! सिंटैक्स का उपयोग करना चाहिए. Googlebot _escaped_fragment_ प्रारूप में हाइपरलिंक का अनुसरण नहीं करेगा.

मैं इस योजना को कार्रवाई में कहां देख सकता/सकती हूं?

http://gwt.google.com/samples/Showcase/Showcase.html पर नमूना AJAX ऐप्लिकेशन देखें. अगर आप बाईंं ओर के किसी भी लिंक पर क्लिक करते हैं, तो आप देखेंगे कि URL में एक #! हैश फ़्रैगमेंट शामिल होगा और ऐप्लिकेशन इस हैश फ़्रैगमेंट से संबंधित स्थिति पर नेविगेट करेगा. अगर आप #! (उदाहरण के लिए http://gwt.google.com/samples/Showcase/Showcase.html#!CwRadioButton) को ?_escaped_fragment_= (उदाहरण के लिए, http://gwt.google.com/samples/Showcase/Showcase.html?_escaped_fragment_=CwRadioButton) से बदलते हैं, तो साइट एक HTML स्नैपशॉट लौटाएगी.

क्या होगा अगर मैं अपनी AJAX साइट पर #! को लागू करना नहीं चुनता/चुनती हूं?

निकट भविष्य में आपके पृष्ठ Google के खोज परिणाम पृष्ठों में ठीक तरह से प्रकट नहीं हो पाएंगे. हालांकि, हम लगातार काम कर रहे हैं ताकि Googlebot एक ब्राउज़र की तरह अधिक से अधिक व्यवहार करे. आपकी साइट के लिए आवश्यक सुविधाएं लागू की जा रही हैं, Googlebot बिना सहायता के ठीक ढंग से आपके पृष्ठों को अनुक्रमित करना शुरू कर सकता है. हालांकि, यह AJAX क्रॉलिंग योजना ऐसी साइटों के लिए एक समाधान प्रदान करती है जो पहले से ही AJAX का उपयोग कर रही हैं और यह सुनिश्चित करना चाहती हैंं कि उनकी सामग्री आज ठीक ढंग से अनुक्रमित की जाए. हम उम्मीद करते हैं कि यह उन लोगों के लिए बढ़िया समाधान होगा जिन लोगों के पास पहले से उनके पृष्ठों के HTML स्नैपशॉट हैं या जिन लोगों ने ऐसे HTML स्नैपशॉट प्राप्त करने के लिए शीषर्क-रहित ब्राउज़र उपयोग करना चुना है.

मैं अपनी सामग्री को नवीनतम कैसे बनाए रख सकता/सकती हूं?

इस प्रश्न का उत्तर पूरी तरह से इस बात पर निर्भर है कि आपके ऐप्लिकेशन की सामग्री कितनी बार बदलती है. अगर यह बार-बार बदलती है, तो आपको हमेशा किसी क्रॉलर अनुरोध के प्रतिसाद में एक नया ताज़ा HTML स्नैपशॉट बनाना चाहिए. दूसरी ओर, एक लाइब्रेरी संग्रहण के बारे में विचार करें जिसकी इन्वेंट्री बार-बार परिवर्तित नहीं होती है. सर्वर को बार-बार एक ही HTML स्नैपशॉट बनाने से बचाने के लिए, आप सभी प्रासंगिक HTML स्नैपशॉट को एकबार में बना सकते हैं, संभवतः ऑफ़लाइन बना सकते हैं और फिर उन्हें भावी संदर्भ के लिए सहेज सकते हैं. आप एक 304 (असंशोधित) HTTP स्थिति कोड के साथ Googlebot का जवाब दे सकते हैं.

क्या होगा अगर मेरा ऐप्लिकेशन हैश फ़्रैगमेंट का उपयोग नहीं करता है?

संभवतः इसे उपयोग करना चाहिए! आप हैश फ़्रैगमेंट का उपयोग करके अपने ऐप्लिकेशन की गति में तेज़ी ला सकते हैं, क्योंकि हैश फ़्रैगमेंट क्लाइंट की ओर से ब्राउज़र द्वारा नियंत्रित किया जाते हैं और इनके कारण पूरा पृष्ठ रीफ़्रेश नहीं होता है. इसके अलावा, ये आपको अपने ऐप्लिकेशन में (अलोकप्रिय "ब्राउज़र वापस बटन") पहले किए गए कार्य का इतिहास बनाने की अनुमति देगा. विभिन्न AJAX फ़्रेमवर्क हैश फ़्रैगमेंट का समर्थन करते हैं. उदाहरण के लिए, वास्तविक साधारण इतिहास, jQuery के इतिहास प्लग इन, Google Web Toolkit की इतिहास कार्यप्रणाली या इतिहास प्रबंधन के लिए ASP.NET AJAX का समर्थन देखें.

अगर, हालांकि, आपके ऐप्लिकेशन को हैश फ़्रैगमेंट का उपयोग करने के लिए संरचित करना संभव नहीं है, तो आप निम्न कार्य कर सकते हैं: अपने हैश फ्रेगमेंट (URL में # चिह्न के बाद का सभी कुछ) विशेष टोकन का उपयोग करें. हैश फ़्रेगमेंट का प्रतिनिधित्व करने वाली अद्वितीय पृष्ठ स्थितियों को एक विस्मयादिबोधक चिह्न के साथ शुरू होना चाहिए. उदाहरण के लिए, अगर आपके AJAX ऐप्लिकेशन में इस तरह का कोई URL शामिल है:

www.example.com/ajax.html#mystate

तो इसे ऐसा बन जाना चाहिए:

www.example.com/ajax.html#!mystate

जब आपकी साइट योजना को अपनाती है, तो आपकी साइट को "AJAX क्रॉल करने योग्य" के रूप में देखा जाएगा. इसका मतलब यह है कि अगर आपकी साइट HTML स्नैपशॉट की आपूर्ति करती है, तो क्रॉलर आपके ऐप्लिकेशन की सामग्री देख पाएगा.

क्या इस तरीके से "खराब" _escaped_fragment_ URL का प्रसार होता है?

URL का _escaped_fragment_ सिंटैक्स एक अस्थायी URL होता है जिसे कभी भी अंतिम उपयोगकर्ता द्वारा नहीं देखा जाना चाहिए. उपयोगकर्ता द्वारा देखे जाने वाले सभी संदर्भों में, अच्छे URL (_escaped_fragment_ के बजाय #! के साथ) का उपयोग किया जाना चाहिए: सामान्य ऐप्लिकेशन इंटरैक्शन में, साइटमैप में, हाइपरलिंक में, रीडायरेक्ट करने में और किसी भी अन्य स्थिति में जहां उपयोगकर्ता URL देख सकता है. उसी कारण से, खोज परिणाम खराब URL के बजाय अच्छी URL होते हैं.

क्या यह योजना क्लोकिंग के लिए रास्ते खोलती है?

क्लोकिंग उपयोगकर्ताओं के लिए विभिन्न प्रकार की सामग्री प्रदान कर रहा है जैसे कि प्रदान की गई सामग्री से लेकर खोज इंजन तक. इसे आमतौर पर खोज परिणामों में किसी एक की रैंकिंग बढ़ाने के उद्देश्य से किया जाता है. क्लोकिंग हमेशा से खोज इंजनों के लिए एक महत्वपूर्ण समस्या रही है (और हमेशा रहेगी) और यहां इस बात पर ध्यान देना आवश्यक है कि AJAX ऐप्लिकेशन को क्रॉल करने योग्य बनाने का मतलब क्लोकिंग का आसान करना बिल्कुल नहीं है. इसी कारण से, HTML स्नैपशॉट में वही सामग्री होनी चाहिए जो अंतिम उपयोगकर्ता किसी ब्राउज़र में देखेगा. अगर ऐसा नहीं है, तो इसे क्लोकिंग के रूप में माना जा सकता है. अधिक जानकारी के लिए यह उत्तर देखें.

क्या मैं अपने फ़्लैश या अन्य रिच मीडिया फ़ाइलों को अधिक क्रॉल करने योग्य बनाने के लिए इस योजना का उपयोग कर सकताा/सकती हूं?

Google कई प्रकार के रिच मीडिया फ़ाइल प्रकारों को अनुक्रमित करता है और हम लगातार हमारी क्रॉलिंग और अनुक्रमण की प्रक्रिया में सुधार लाने पर कार्य कर रहे हैं. हालांकि, Googlebot किसी फ़्लैश या अन्य रिच मीडिया ऐप्लिकेशन की सभी सामग्री को देखने में सक्षम नहीं हो सकता है (ठीक वैसे ही जैसे यह आपकी साइट के सभी गतिशील सामग्री को क्रॉल नहीं कर सकता है), इसलिए Googlebot को अतिरिक्त सामग्री प्रदान करने के लिए इस योजना का उपयोग करना उपयोगी हो सकता है. फिर से, HTML स्नैपशॉट में वही सामग्री होनी चाहिए जो अंतिम उपयोगकर्ता किसी ब्राउज़र में देखेगा. Google, उन साइटों को अपनी अनुक्रमणिका से बाहर करने का अधिकार सुरक्षित रखता है, जिनपर क्लोकिंग का उपयोग किया जा सकता है.

क्या होगा अगर मेरी साइट में कुछ ऐसे हैश फ्रेगमेंट URL हैं जिन्हें क्रॉल नहीं किया जाना चाहिए?

जब आपकी साइट AJAX क्रॉलिंग योजना को अपनाती है, तो Google क्रॉलर उसके समक्ष आने वाले प्रत्येक हैश फ्रेगमेंट URL को क्रॉल करेगा. अगर आपके पास हैश फ्रेगमेंट URL हैं जिन्हें क्रॉल नहीं किया जाना चाहिए, तो हमारा सुझाव है कि आप अपनी robots.txt फ़ाइल में एक रेगुलर एक्सप्रेशन निर्देश जोड़ें. उदाहरण के लिए, आप अपने हैश फ्रेगमेंट में ऐसी पद्धति का उपयोग कर सकते हैं जिसे क्रॉल नहीं किया जाना चाहिए और फिर अपनी robots.txt फ़ाइल में इससे मेल खाने वाले सभी URL बाहर निकालें. मान लीजिए कि आपकी सभी गैर-अनुक्रमणिका करने योग्य स्थितियां #DONOTCRAWLmyfragment फ़ॉर्म से हैं. तो आप अपनी robots.txt में निम्न को जोड़कर इन पृष्ठों को Googlebot द्वारा क्रॉल किए जाने से रोक सकते हैं:

Disallow: /*_escaped_fragment_=DONOTCRAWL
हैश फ्रेगमेंट में  #! के मौजूदा उपयोग का क्या होगा?

#! मौजूदा हैश फ्रेगमेंट में कभी-कभी उपयोग किए जाने वाला टोकन होता है; हालांकि, इसकी URL विनिर्देशों द्वारा अनुमति नहीं दी जाती है. अगर आपका ऐप्लिकेशन #! का उपयोग करता है, लेकिन नई AJAX क्राॅलिंग योजना को अपनाना नहीं चाहता, तो क्या होता है? एक तरीका जो आप अपना सकते हैं, वह यह है कि अपनी robots.txt में कोई निर्देश जोड़कर क्रॉलर को इसका संकेत दें.

Disallow: /*_escaped_fragment_

कृपया ध्यान दें कि इसका मतलब यह है कि अगर आपके ऐप्लिकेशन में केवल यह URL शामिल है: www.example.com/index.html#!mystate, तो इस URL को क्रॉल नहीं किया जाएगा. अगर आपके ऐप्लिकेशन में खाली URL www.example.com/ajax.html भी शामिल है, तो इस URL को क्रॉल किया जाएगा.

एक्सेस-योग्यता का क्या होगा?

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

मुझे rel="canonical" का उपयोग कैसे करना च‍ाहिए?

<link rel="canonical" href="http://example.com/ajax.html#!foo=123" /> उपयोग करें (<link rel="canonical" href="http://example.com/ajax.html?_escaped_fragment_=foo=123" /> का उपयोग न करें.

मुझे अपने साइटमैप में कौन सा URL शामिल करना चाहिए?

आपकेे साइटमैप में वही वर्शन होना चाहिए जिसे आप खोज परिणामों में प्रदर्शित करना चाहते हैं, इसलिए इसे http://example.com/ajax.html#!foo=123 होना चाहिए.

 #! URL उत्पाद फ़ीड को कैसे प्रभावित करेगा?

साइटों के लिए उत्पाद खोज और वेब खोज के लिए समान URL चाहना आम बात है. आम तौर पर, URL के #! वर्शन को "प्रामाणिक" वर्शन के रूप में माना जाना चाहिए है जिसका सभी संदर्भों में उपयोग किया जाना चाहिए. _escaped_fragment_ URL को वह अस्थायी URL माना जाता है जिसे अंतिम उपयोगकर्ता द्वारा कभी देखा नहीं जाना चाहिए.

मैं शीर्षक-रहित ब्राउज़र के रूप में HtmlUnit का उपयोग कर रहा/रही हूं, लेकिन यह काम नहीं कर रहा है. क्यों नहीं?

"काम नहीं करता है" का मतलब है कि HtmlUnit वह स्नैपशॉट नहीं लौटाता है जिसे आप देखने की उम्मीद कर रहे थे, संभवतः ऐसा होने की मुख्य वजह आपके द्वारा JavaScript और/या XHR अनुरोधों को निष्पादित होने के लिए पर्याप्त समय न दे पाना है. इसे ठीक करने के लिए, निम्न में से किसी एक या सभी चरणों को आज़माएं:

  • NicelyResynchronizingAJAXController का उपयोग करें. यह HtmlUnit को किसी भी बकाया XHR कॉल के लिए प्रतिक्षा करने के लिए प्रेरित करेगा.
  • प्रतीक्षा समय को waitForBackgroundJavaScript और/या waitForBackgroundJavaScriptStartingBefore के लिए बढ़ाएं.
इससे संभवतः आपकी समस्या का समाधान हो जाएगा. अगर इससे भी समाधान नहीं होता है, तो आप यहां पर HtmlUnit के लिए सामान्य प्रश्न देख सकते हैं: http://htmlunit.sourceforge.net/faq.html. HtmlUnit में एक उपयोगकर्ता फ़ोरम भी है.

 

क्या यह उपयोगी था?
हम उसे किस तरह बेहतर बना सकते हैं?