2011-12-13 13 views
10

मुझे HTTP प्राप्त करने और पोस्ट विधियों के बीच अंतर पता है (जैसा कि this प्रश्न में बड़े विवरण में बताया गया है)।
मेरा सवाल यह है कि हमेशा AJAX कॉल के लिए पोस्ट विधि का उपयोग क्यों न करें, जो सुरक्षित है। क्या अनुरोध तेजी से मिलता है? क्या पोस्ट पाने के लिए प्राथमिकता है?AJAX कॉल के लिए हमेशा HTTP पोस्ट का उपयोग क्यों नहीं करते?

कोई भी ajax कॉल के लिए एक कारण नहीं है - एक ही यूआरएल के लिए एक लिंक साझा करने के लिए, लेकिन AJAX के लिए इस तर्क को यह अच्छा नहीं है ...

उत्तर

10

प्राप्त अनुरोधों छोटे और तेजी से कर रहे हैं; और लीवरेज कैशिंग, दोनों क्लाइंट साइड पर और किसी भी प्रॉक्सी के हिस्से में जो खेल में हो सकता है।

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

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

भी अर्थपूर्ण मुद्दे हैं जो खेल में आते हैं। POST अनुरोधों का वास्तव में उपयोग किया जाना चाहिए जब इरादा सर्वर पर डेटा को संशोधित करना है।

5

मेरा प्रश्न है क्यों नहीं हमेशा AJAX कॉल के लिए

क्योंकि एक RESTful आवेदन में यह मतलब नहीं होगा पोस्ट विधि का उपयोग करें कि कार्रवाई पर राज्य को संशोधित नहीं के लिए पोस्ट क्रिया का उपयोग करने के सर्वर। एक भरोसेमंद आवेदन में यह वास्तव में कोई फर्क नहीं पड़ता कि अनुरोध कैसे किया गया था: चाहे वह सामान्य, AJAX, या रोबोट था।

इसके अलावा अनुरोध आमतौर पर तेज़ होते हैं और ब्राउज़र द्वारा कैश किए जाते हैं।

+1

दूसरे भाग तो पोस्ट प्राप्त पसंद करते हैं के लिए पर्याप्त है, लेकिन मैं बाकी मानकों _follow_ के लिए आश्वस्त किया जा रहा नहीं होता यह तेजी से नहीं था और कैश की गई।क्या अनैतिक परिचालनों के लिए पोस्ट विधि का उपयोग न करने के अन्य कारण हैं? – gdoron

+0

@gdoron, व्यक्तिगत रूप से मैं हमेशा अपने अनुप्रयोगों में आरईएसटी मानकों का पालन करता हूं, इसलिए यह मेरे लिए तर्क संख्या 1 है। –

2

जीईटी पोस्ट के लिए सर्वर बनाम दो के लिए एक अनुरोध का उपयोग करता है।

याहू की वाईएसलो टीम के अनुसार आपको जीईटी का चयन करना चाहिए जब सामग्री प्रेषित आईई की 2K सीमा से कम हो। यहां अधिक पढ़ें: http://developer.yahoo.com/performance/rules.html#ajax_get

+2

आपको यह इंप्रेशन देता है कि एक पोस्ट में 2 अनुरोध होते हैं? – Gareth

+0

@ गैरेथ, शायद यह वह लिंक था जो उसने प्रदान किया था ...? – gdoron

+2

@gdoron एक टीसीपी पैकेट HTTP अनुरोध के समान नहीं है। किसी भी प्रकार के अनुरोध को कई टीसीपी पैकेट में विभाजित किया जा सकता है, यह ऐसा होता है कि अधिकांश (सभी नहीं) ब्राउज़र [कम से कम 2 पैकेट का उपयोग करें] (http://josephscott.org/archives/2009/08/xmlhttprequest-xhr-uses एक AJAX पोस्ट के लिए बहु-पैकेट-के-http-post /)। आइए स्पष्ट करें कि टीसीपी पैकेट की गिनती सबसे अच्छी माइक्रो-ऑप्टिमाइज़ेशन पर है, और माइक्रो-ऑप्टिमाइज़ेशन शायद ही कभी किसी प्रश्न के लिए एक अच्छा जवाब देता है कि आपको "हमेशा" कुछ करना चाहिए या नहीं। – Gareth

7

मैं अपनी वेबसाइटों को तेज करने के लिए वापस कुछ दिन और वे बहुत अच्छी तरह से समझा दिया है के लिए याहू सर्वोत्तम प्रथाओं पढ़ रहा था कि हम क्यों पसंद किए जाने वाले पद खत्म होने और यहाँ आपके संदर्भ के लिए पद का टुकड़ा है

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

एक दिलचस्प पक्ष प्रभावित करता है कि वास्तव में किसी भी डेटा को पोस्ट किए बिना पोस्ट जीईटी की तरह व्यवहार करता है। HTTP चश्मे के आधार पर, GET जानकारी पुनर्प्राप्त करने के लिए है, इसलिए जब आप केवल डेटा का अनुरोध कर रहे हैं, तो यह GET का उपयोग करने के लिए समझ में आता है, क्योंकि डेटा को सर्वर-साइड संग्रहित करने के लिए डेटा भेजने का विरोध किया जाता है।

विस्तार के लिए जानकारी के लिए देखते पेज उल्लेख

Yahoo Best Practices for speed up

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