האיש המסכן של אחסון במטמון בג'אווה סקריפט

[TL;ד ר גירסה: שימוש בקבצי cookie כדי לאחסן את תוצאות הקריאות אסינכרונית; לעיבוד תוצאות הקריאות האחרונות האסינכרונית מיד, לאחר מכן לאמת אותם לאחר טעינת העמוד.]

אני עובד באתר האינטרא-נט של SharePoint עבור לקוח כי תכונות, בין היתר, ניווט משני מסוגנן אפשרויות תפריט אשר מנוהלים באמצעות רשימה מותאמת אישית זקן רגיל.  הרעיון הוא שהלקוח מקבל לשלוט התפריט של האתר "שלהם" מבלי להשפיע או להיות מושפעים הניווט העולמי ע י זה.

(יש משהו מאוד חתרנית אודות הוספת CEWP שמצביע על קובץ HTML זה טוען כמה CSS, JS אורחותיו כמעט הכל על ההתנהגות של אתר. אבל זה בשביל עוד פוסט)

הקוד עבור זה פשוט יפה:

הנקודה כאוב זה, בכל פעם שמישהו פוגע באחד העמודים באתר, דפדפן האינטרנט של המשתמש הוא מושיט יד כדי לקבל פריטים מהרשימה  לאחר dev השלמת הבדיקות הוכח שהדברים יהיו יציבים ולהשלים, קריאה זו אינה נחוצה יותר 99% מהזמן מאז התפריט משתנה לעיתים רחוקות.  יש לו גם השפעה UI מוזר אשר נפוץ בהעולם של אתרי אינטרנט היפר-ajaxy – מלבדך, רק אז התפריט רינדור.  זה מרצד מסיח את הדעת לדעתי.  ולחוץ.. כל כך, אחסון במטמון. 

התאמתי את הלוגיקה נוהג כך:

  • לחפש קובץ cookie בדפדפן המכיל את התפריט כפי בפעם האחרונה קראתי את זה
    • אם נמצאו, לדקלם את זה מיד.  לא רוצה להמתין הטעינה.  (אתה צריך לוודא כי ה-HTML שלך נמצא במיקום אסטרטגי כאן, אבל זה לא קשה לעשות).
  • להמתין לסיים את הטעינה אסינכרונית להתקשר כדי לטעון את פריטי התפריט מתוך רשימה באמצעות מנוחה או lists.asmx או מה שלא יהיה
  • להשוות בין מה יש לי נגד העוגיה
    • אם זה מתאים, . תפסיק
    • אחרת, בעזרת jQuery, באופן דינמי לאכלס חבורה אם <li>ב <ul>
  • שימוש ב- CSS כדי לעשות את כל העיצוב
  • רווח!

חלק מכם עומדים לומר, "היי! אין ממש מטמון דרך כאן מאז שאתה קורא את התפריט בכל מקרה בכל פעם.”  אתה צודק-אני לא נותן השרת כל סוג של הפסקה.  אבל כי השיחה האסינכרונית ולא קורה אחרי הדף הוא ראשוני תוכן HTML מלא רינדור, "אני מרגיש" קשובים יותר למשתמש.  התפריט מעבד די כמה מצייר הדף.  אם התפריט יקרה השינוי, המשתמש הוא נתון מרצד חידשו של התפריט, אבל רק פעם אחת.

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

  • להכניס כלל "המטמון העוגיות" בתוקף למשך תקופה מינימלית של 24 שעות או איזה פרק זמן אחר. כל עוד יש אין עוגיה שפג תוקפם, . מעולם לא הכיתי את השרת ולהשתמש בזק תפריט של העוגייה.

טוב, זה כל מה שעולות לי לראש כרגע :). 

אם למישהו יש רעיונות חכם פה אני אשמח להכיר אותם.

אחרון – טכניקה זו יכולה לשמש לדברים אחרים.  דף של הלקוח יש מספר דברים מונחי-נתונים על עמודים שונים, רבים מהם שינוי יחסית נדירות (כמו פעם בשבוע או פעם בחודש).  אם ייעדת בתחומים ספציפיים של פונקציונליות, אתה יכול לתת ממשק משתמש קשובים יותר על ידי משיכת תוכן מהחנות קוקי המקומי ובעיבוד מיד.  זה מרגיש מהר יותר למשתמש גם אם אתה לא מציל את השרת בכל מחזורי.  אתה יכול שמור את מחזורי שרת על ידי החלטה כמה תנאים וגורמים לפסול את המטמון העוגיות המקומי הזה.  . זה הכל המצבית אמנותי דברים ואני באמת הכי הכיף :). 

</קצה>

undefinedמנוי על הבלוג שלי.

עקוב אחרי הטוויטר ב http://www.twitter.com/pagalvin

תגובה אחת על הפוסט "האיש המסכן של אחסון במטמון בג'אווה סקריפט

  1. Jonathan רוסל

    פול הי,

    יישום נחמד, זה משהו שאנו משתמשים אבל השתמשנו באחסון מקומי של HTML5 API במקום עוגיות. הכונן הראשון היה שאנחנו צריכים לאחסן יותר מאשר קובץ cookie יכול לאפשר. יתרון נוסף הוא כי זה אינו מעלה מטענים, ואילו עוגיות נשלחים שוב ושוב. מנקודת מבט של dev. זה מאוד קל לשימוש.
    תמיכת דפדפנים אינה מושלמת אבל באמת די טוב, http://caniuse.com/namevalue-storage .

    ג'ונתן

תשאיר הודעה

כתובת האימייל שלך לא תפורסם. שדות חובה מסומנים *