מספר טיפים לבניית אתר מהיר

בשנים האחרונות האינטרנט התפתח ממש מהר, וכיום, גוגל פועלים להפיכת האינטרנט למהיר יותר ("Let's make the web faster"), הם גם הצהירו בעבר כי אתרים איטיים ידורגו מתחת לאתרים מהירים ובכלל, למי יש סבלנות לחכות יותר מ-2 שניות עד שעמוד נטען?

קיבצתי מספר טיפים, חלקם נכתבו ע"י סטיב סאודרס, הפוסט יעסוק בשיפור ביצועים בצד השרת:

1. השתמשו ב-KeepAlive, פונקציה זו מאפשרת לקבל מס' בקשות רצופות בחיבור אחד מאשר יצירת חיבור חדש כל פעם:

נניח שאנחנו פותחים דף והוא מורכב מ:

  • קובץ css.
  • קובץ js.
  • 5 קבצי jpg.

הדפדפן מבצע בסה"כ 8 בקשות GET (דיי דומה ל: אהלן שרת X, שמפעיל את אתר Y, תן לי את קובץ Z). במידה ו-KeepAlive מכובה, הדפדפן יסגור את החיבור אחרי כל בקשה ויפתח חיבור חדש לבקשה הבאה.

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

2. Expires Header – השרת מודיע לדפדפן עד מתי לשמור את הקובץ: 

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

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

3. CDN – Content Delivery Network – שימוש ברשת להפצת תוכן: 

מדובר ברשת של שרתים הפזורים בכל העולם, ואת התוכן הסטטי (קבצי JS, תמונות, ווידאו, ועוד) המשתמש מוריד מהשרת הקרוב אליו.

הרעיון במקור נועד למנוע "פקקים" באינטרנט, בתקופה שהאינטרנט היה בחיתוליו והעברה של קובץ בין יבשות היה בעייתית. כיום רוב הבעיות האלה נפתרו (אם כי עדיין יש packet loss בין ישראל בארה"ב) והשימוש ב-CDN הפך מבלתי נמנע לאפשרי.

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

מתי כן להשתמש ב-CDN? אם יש לכם:

  • אתר שפונה לשוק הבינלאומי.
  • אתר עם טראפיק גבוהה.
  • אתר שלעיתים יש קפיצות גבוהות של טראפיק.
  • אתר שמשדר ווידאו.

ניקח לדוגמא חברת קוסמטיקה ישראלית שפועלת בשוק הבינלאומי שמארחת את האתר שלה בישראל. אתר החברה (23 קבצים ששוקלים 450K) נטען תוך 4.5 שניות בישראל, 6.7 שניות ברוסיה (שוק חשוב לחברה) ו-7.1 שניות לארה"ב (שיקגו).

לאחר ביצוע אופטמציה לקוד האתר (Css sprites, JS/CSS compress & combine) זמן הגישה בישראל ירד ל-2.3 שניות בממוצע. גם ברוסיה ובארה"ב הורגשה טעינה מהירה יותר, אך עדיין יש מקום לשיפור המהירות בחו"ל, החברה העבירה את האתר ל-CDN של חברת AKAMAI וכיום זמן הטעינה הממוצע של האתר בארה"ב רוסיה וישראל עומד על 2.1 שניות בממוצע.

4. קאשינג לעמודים שמשתנים שמתעדכנים מדי 30 שניות ומעלה:

בעמודים עמוסי תוכן יש לפעמים שאילתות SQL מורכבות שמאטות את תהליך יצירת העמוד (וטעינת העמוד מתעכבת הרבה יותר).

מאחר והתוכן אינו מתעדכן באופן מיידי, ניתן ליצור משימה מתוזמנת שתיצור עמוד סטטי מדי X שניות (תלוי בתדירות של העמוד).

אני אתן דוגמא לשיפור ביצועים: לאחד הלקוחות שלי יש סקריפט שמפעיל מס' אתרי ווידאו, בעמוד הקטגוריות, ה-TTFB עמד על 3.5 שניות באופן קבוע, לאחר יצירת משימה מתוזמנת מדי 5 דקות ה-TTFB צנח ל-0.08 שניה.

לעוד חומרים בנושא האצת אתרים

פורסם בקטגוריה האצת אתרים, כללי. אפשר להגיע לכאן עם קישור ישיר.

כתיבת תגובה

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