08-05-2009, 14:45
|
|
|
חבר מתאריך: 15.08.06
הודעות: 1,561
|
|
[JS] בעית performance
אהלן,
אני בונה אפליקצית ווב שמשתמשת בJS בצד לקוח כדי לעשות כל מני מניפולציות על מידע (שמיוצר ב PHP). הרעיון הוא שיש לי רשימה גדולה של נתונים כאשר לכל נתון יש checkbox שמאפשר לבחור אותו, ויש אפשרות להוציא את הנתונים ולשמור לקובץ.
בנוסף (וכאן בעצם הבעיה העיקרית), לכל נתון יש כמה מאפיינים, שלפיהם יש אפשרות לעשות MASS CHECK. הפונקציות האלו משתמשות ב getElementById על רשימה ארוכה של IDים, שנוצרים בצד שרת לפי המאפיינים של הנתונים. דוגמא, אם קיים נתון עם id=a_2_3, והוא נחשב נתון "רלוונטי" אז ירשם ב JS:
קוד:
var relevant_ids = ['a_2_3', 'a_1_3', ... ]
כאשר אני עובד על כמות נתונים קטנה, אין לי בעיה והכל עובד לי מצוין. הבעיה קיימת רק כשאני מכניס מעל 4000 שורות של נתונים (המערכת אמורה לפעול בצורה סבירה תחת עומס של 8000 נתונים), ורק בפעם הראשונה שאני קורא לפונקציות האלה. מה שקורה זה שהדפדפן נתקע לזמן מסוים (לפי בדיקות, בין חצי דקה לדקה עבור בדיקה), ולפעמים אפילו אני מקבל הודעה ש"לסקריפט לוקח יותר מדי זמן לעבוד, האם אני רוצה לעצור אותו".
לפי מה שהבנתי, לדפדפן יש איזה מנגנון CACHE שגורם ל getElementById לעבוד מהר יותר אחרי פעם אחת, ולכן הדפדפן נתקע רק בפעמים הראשונות שאני משתמש ב masschecks.
האם למישהו יש עצה איך לייעל את הקריאות? אני לא מצליח לחשוב על דרך אחרת לשנות מאפיינים של קבוצה של אלמנטים בלי להשתמש ב getElementById.
אגב, מה שכן הצלחתי לעשות זה להחשיך את המסך (ע"י DIV נסתר ותמונה של LOADING), אבל הדפדפן עדיין נתקע ולא נותן להגיב.
תודה למי שקרא עד לפה
_____________________________________
!!אזהרה!!
ההודעה עלולה להכיל שברי אגוזים ו/או איברי דגים כלשהם
!!אזהרה!!
|