GET לעומת POST. וגם: WebServiceים ו-WCF

11 באפריל 2010

תגיות: , , ,
2 תגובות

מדי פעם אני נתקל באתרים שזוחלים לאט. לעיתים הפיתוי מושך אותי לפתוח את כלי הפיתוח שלי ולהבין מה קרה שם.

אחד מהאתרים האלה השתמש ב-UpdatePanel וטעינת רכיבי AJAX ארכה דקות ארוכות. בהמשך מישהו מצוות האתר הזה התחיל לעבוד עם WebService שמחזיר JSON.

פה כבר מדובר בשיפור מדהים בביצועים, אבל עדיין רחוק ממה שניתן היה להשיג. אילו וכאשר.

 

נוחות הפיתוח והבדיקה של WebServiceים למינהם ובהמשך WCF הפכה אותם לשימושיים גם בתוך הדפדפן, כמקור למידע אותו משלימים ב-AJAX.
מדובר בכלי יעיל, אלא שגם לו יש חסרונות מרכזיים. הראשי שבהם הוא השימוש ב-POST במקום ב-GET, ה-Overhead הלא קטן של Serilization על אובייקטים, במיוחד כשהם גדולים אבל האמת היא שכרגיל המפתח נמצא בצד הלקוח

Yahoo כבר לימדו אותנו מזמן ש-GET יעיל יותר מ-POST. בגלל שמדובר בחיסכון של Packet שעובר ברשת, אבל אני חושב שיש פה עוד כמה דברים שמתפספסים בצורה הזו.

האתר שלנו גדל, ואנחנו מקבלים כל יום אלפי חיפושים במערכת שנבנתה. מן הסתם נרצה לשים CDN או Proxy פשוט לפני האתר שלנו כדי להוריד עומסים.
Proxy כזה יכול לאחסן אצלו תוצאות של GET, אבל לא תוצאות של POST.

וזה נוסף על כך ש-Serilization של מידע עולה במשאבים גם כשמדובר בשדה טקסט אחד שנשלח והוא עולה גם על המידע הנשלח ב-XML אם JSON. במקרה כזה- GET יהיה פשוט ומהיר עוד יותר ויחסוך עוד נקודה של עומס כשבונים רכיב כמו השלמה אוטומאטית.

 

מתי כן נשתמש ב-POST? כשיש צורך אמיתי להעביר כמות גדולה של מידע או כשצריך לשמור מידע או לבצע שינויים בשרת, ורוצים למנוע מתקפות בסגנון CSRF.

 

או בקצרה

GET – בקשת מידע

POST (ו-REST למינהם) – שמירת מידע

 

עוד בנושא:

מדוע ASP.net AJAX חוסם כברירת מחדל בקשות GET מאת Scott Guthrie

הוסף תגובה
facebook linkedin twitter email

כתיבת תגובה

האימייל לא יוצג באתר. שדות החובה מסומנים *

2 תגובות

  1. יעקב11 באפריל 2010 ב 13:40

    היית צריך לכתוב יותר על אבטחה ו-GET. קל יחסית לעשות נזקים עם בקשות כאלה.

    הגב
  2. משה29 באפריל 2010 ב 18:09

    צודק. אבל בהנחה שהמערכת מיועדת רק לשליפת מידע ומבצעת בדיקת קלט כמו שצריך – הנזק שאפשר לגרום הוא יחסית קטנה.

    כמובן, כמו תמיד – צריך זהירות.

    הגב