ABA


"כיצד לבצע אופטימיזציה לאתר שיהיה סופר מהיר?"
גירסת הדפסה        
קבוצות דיון פיתוח, תיכנות ובניית אתרים נושא #20427 מנהל    סגן המנהל    מפקח   Winner    צל"ש   מומחה  
אשכול מספר 20427
BomBast 
חבר מתאריך 20.6.04
8617 הודעות
   18:52   21.12.13   
אל הפורום  
  כיצד לבצע אופטימיזציה לאתר שיהיה סופר מהיר?  
 
   יש לכם שיטות כיצד להוריד את קריאות האתר לשרת?

כרגע האתר שלי:
www.GoGy.com

מהיר, אך לא כמו אלה:
kizi.com

yepi.com

hopy.com

האם יש לכם רעיונות לשיפור האופטימיזציה על מנת לקבל אתר סופר מהיר?

תודה לעוזרים!


                                שתף        
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

  האשכול     מחבר     תאריך כתיבה     מספר  
  מהירות היא גם פונקציה של קירבת השרת לקהל היעד. איפה השרת ממוקם ומה קהל היעד? sza  21.12.13 19:02 1
     כמובן, האתר נמצא על cdn על מנת לנתב את הגלישה בהתאם לכל אחד BomBast  21.12.13 19:16 2
  אני בספק אם הניסיון שצברתי בייעול של רוטר יעזור לך :) אורי  21.12.13 21:22 3
     +1 בנוסף תקרא למשחקים בajax ככה המסגרת תעלה ממש מהר משה הלולן 21.12.13 21:43 4
         תודה אנשים טובים. BomBast  21.12.13 22:13 5
  תקרא את המאמר הזה : Net_Boy  21.12.13 22:33 6
     תודה לך BomBast  22.12.13 01:20 7
  דגשים להעלאה מהירה יותר של אתר ליל קיץ 22.12.13 18:29 8
     תגובה מאוד מאוד יפה תודה רבה לך BomBast  22.12.13 19:10 9
     אחלה תגובה, תיקון קטן לגבי Grunt, last_test 22.12.13 19:31 10
         נכון ליל קיץ 23.12.13 16:52 12
  תודה רבה חברים עזרתם לי מאוד ואני אסיר תודה לכל אחד מכם! BomBast  23.12.13 15:46 11
  תשמע יש באמת המון דרכים... קודם כל תקרא את זה Dr-serp 24.12.13 14:02 13

       
sza  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 26.4.02
12357 הודעות, 22 פידבק
   19:02   21.12.13   
אל הפורום  
  1. מהירות היא גם פונקציה של קירבת השרת לקהל היעד. איפה השרת ממוקם ומה קהל היעד?  
בתגובה להודעה מספר 0
 


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
BomBast 
חבר מתאריך 20.6.04
8617 הודעות
   19:16   21.12.13   
אל הפורום  
  2. כמובן, האתר נמצא על cdn על מנת לנתב את הגלישה בהתאם לכל אחד  
בתגובה להודעה מספר 1
 
   שנמצא בארצו.

קהל היעד עולמי, - CDN פותר את הבעיה


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
אורי 
חבר מתאריך 9.7.12
20459 הודעות
   21:22   21.12.13   
אל הפורום  
  3. אני בספק אם הניסיון שצברתי בייעול של רוטר יעזור לך :)  
בתגובה להודעה מספר 0
 
   בסקופים הורדתי את הקריאות לדיסק ב95% בערך על ידי ייעול של קוד והעלאה של תוכן לRAM עם memcached.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
משה הלולן לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 11.6.13
4818 הודעות, 8 פידבק
   21:43   21.12.13   
אל הפורום  
  4. +1 בנוסף תקרא למשחקים בajax ככה המסגרת תעלה ממש מהר  
בתגובה להודעה מספר 3
 
   ערכתי לאחרונה בתאריך 21.12.13 בשעה 21:47 בברכה, משה הלולן
 
עוד משהו תראה איך הם טוענים את התמונות של המשחקים.. ממש חכם
http://assets0.yepi.com/dataUtils2.php?x=y13&t=1387375633&method=4&from=0&to=20&order=all&quality=90

לעומת אצלך שזה תמונה תמונה


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
BomBast 
חבר מתאריך 20.6.04
8617 הודעות
   22:13   21.12.13   
אל הפורום  
  5. תודה אנשים טובים.  
בתגובה להודעה מספר 4
 
   מחכה לעוד אפשרויות


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Net_Boy  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 1.4.02
17151 הודעות, 1 פידבק
   22:33   21.12.13   
אל הפורום  
  6. תקרא את המאמר הזה :  
בתגובה להודעה מספר 0
 
   https://developers.google.com/speed/docs/best-practices/rules_intro

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


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
BomBast 
חבר מתאריך 20.6.04
8617 הודעות
   01:20   22.12.13   
אל הפורום  
  7. תודה לך  
בתגובה להודעה מספר 6
 
   מעריך.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
ליל קיץ לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 14.2.10
10048 הודעות, 7 פידבק
   18:29   22.12.13   
אל הפורום  
  8. דגשים להעלאה מהירה יותר של אתר  
בתגובה להודעה מספר 0
 
   ערכתי לאחרונה בתאריך 22.12.13 בשעה 18:49 בברכה, ליל קיץ
 
א. צימצום קריאות לשרת מהדף:
מספר הקריאות חשוב בהרבה מגודל הקריאות הפיזי על הכונן.
לדוגמא: אם בדף הראשי אתה טוען 150 קבצי jpg במשקל כולל של 1mb,
עדיף לעשות להם איחוד ולקרוא קובץ אחד גדול, אפילו אם הוא יהיה במשקל של 1.5mb.
(הדוגמא שהבאתי בכוונה היא בהקצנה, יכול להיות שבמקרה הספציפי הזה חצי מגה לא יובילו לשיפור משמעותי)

ב. קבצי ג׳אווהסקריפט ארוכים:
השתמש בקומפרסרים כדי לדחוס את הג׳אווהסקריפט שלך לקובץ קטן יותר.
סעיף א׳ פועל גם על סעיף ב׳:
אם יש לך 10 קבצי ג׳אווהסקריפט שונים, השתמש ב grunt למשל כדי לאחד אותם לקובץ אחד.

ג. שים קבצי ג׳אווהסקריפט בתחתית העמוד ולא ב header.
זה יכול להיות טריקי כי מפתחים מסויימים סומכים על הידיעה שהקובץ js נטען לפני עליית העמוד,
אבל טעינה של js בסוף העמוד תוביל בסופו של דבר ליצירת העמוד ולאחר מכן לטעינה של ה js לתוכו -
מה שאולי טכנית לא משפיע על זמן טעינת העמוד אבל פיזית - העמוד עולה מהר יותר מכיוון שהתוכן מוצג ורק לאחר מכן ה js מופעל.

ד. css, בדיוק אותו הסיפור כמו js.
אפשר להשאיר אותו ב header, אבל דחוס אותו בעזרת less compressor או כל כלי אחר לקובץ אחד קטן, במקום המון קבצי css שונים ו uncompressed.

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

צד שרת:

א. השתמש ב gzip כדי לדחוס את הקבצים שנשלחים אל הקליינט.

ב. caching files. אם יש מידע שחוזר על עצמו אין טעם לקרוא לו מחדש בכל פעם.
headers על הקבצים או הגדרה נכונה של האפצ׳י/nginx יובילו ל caching אצל הלקוחות ויחסכו זמן טעינה יקר ערך.

ג. mysql queries
אם הדטאבייס שלך לא יעיל השאילתות יכולות להיות ארוכות מאוד ועד שלא יסתיימו, אין אפילו התחלת טעינה של העמוד.
כפי שנאמר, ניתן לחסוך שאילתות כבדות עם memcached או כל כלי אחר (אפילו nosql) כדי לטעון שאילתות שחוזרות על עצמן לזיכרון של השרת ולחסוך בזמני הרצה.
אם אין לך אפשרות להתקין מודול קאשינג על השרת, תמיד גם אפשר להשתמש בקבצי cache סטטים עלההארדיסק.
נכון, זה קצת טוחן את הדיסק הקשיח אבל זה מאוד משתלם, מנסיון של עבודה על פלטפורמות של עשרות מיליוני יוזרים.

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

ד. הגדרות של השרת
אני מזמן נטשתי את apache ועברתי ל nginx.
על ה nginx אני משתמש במודול של php-fpm. זה בעצם fastcgi אלטרנטיבי. הוא מאפשר ניהול נכון יותר של הפרוססים php שרצים על השרת מה שמגדיל את זמני התגובה בצורה מאוד משמעותית.
מעבר לכך, יש לו המון יתרונות נוספים כמו אפשרות לניהול עצמי של הפרוססים על השרת,
מה שמאוד משפיע על הסקלביליות של האתר שלי בכל מה שנוגע לעבודות צד-שרת נטו.

ה. אם אתה על mysql, תנטוש את myisam.
היתרונות שיש ל myisam מאוד קטנות ביחס לתועלת שמביא innodb.
אז נכון.. הבנצ׳מארקים מראים ש myisam מהיר יותר בשליפה, אבל אל תשכח ש innodb פשוט מבטל
לחלוטין את התור שנוצר בבקשות לשאילתות בעיקבות נעילות טבלה של mysql,
לכן בטווח הארוך הכמה - מילישניות שתחסוך לא שוות את המאמץ.

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

----
סקלאביליות:

חשוב לזכור שלכל שרת יש limit אליו הוא יכול להגיע, בין אם זה שרת דטא או שרת web,
זה תלוי מן הסתם בכח הפיזי של השרת והן בהגדרות אופטימיזציה נכונות.
קשה לי להאמין שזה המקרה, אבל גם בשרתים מאוד מאוד כבדים (מספר מעבדים גבוה מאוד וזיכרון די מטורף)
הצלחתי להגיע למצבים בהם השרת כבר לא יכול לעמוד בכמות הפניות.
מה עושים?
load balancer, מחלקים את הכח בין 2 שרתי עיבוד שיעשו בשבילך את העבודה.
mysql - ניתן לבצע replica של הדטאבייס המקורי כך ששליפות המידע יתבצעו משני שרתים במקביל.


----
אתה יכול להיכנס לאתר שלי וללמוד מחקירה על הדברים שביצעתי כחלק מכל הסעיפים שרשמתי כאן:
http://memofish.com
עדיין לא סיימתי את עבודות האופטימיזציה, שכן רק על העמוד הראשי יש בממוצע 150 שאילתות שונות שרצות מה שמעט את אופן העלאת המוצרים.
השלב הבא הוא להעביר את השאילתות הנפוצות ל memcached שכבר התקנתי על השרת,
מה שלהערכתי יוביל לטעינה של העמוד במלואו בכשנייה אחת (עכשיו בערך 3 שניות על יוזר שנטען cache קליינד סייד אצלו).

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

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

גל


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
BomBast 
חבר מתאריך 20.6.04
8617 הודעות
   19:10   22.12.13   
אל הפורום  
  9. תגובה מאוד מאוד יפה תודה רבה לך  
בתגובה להודעה מספר 8
 
   ערכתי לאחרונה בתאריך 22.12.13 בשעה 19:16 בברכה, BomBast
 
מאוד מעריך את זה!!

תיבת הדואר שלך באתר מלאה, איך אפשר ליצור עמך קשר?...

שחר


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
last_test
חבר מתאריך 20.8.13
328 הודעות
   19:31   22.12.13   
אל הפורום  
  10. אחלה תגובה, תיקון קטן לגבי Grunt,  
בתגובה להודעה מספר 8
 
   הוא לא מבצע בעצמו את תהליך ה-compress של הקבצים, הוא סה"כ Task Manager שדרכו אתה יכול באמת לנהל משימות שקשורות לשרת ולמערכת שרצה עליו.

אני לא יודע אם כדאי לזרוק את Apache לפח כל כך מהר, אתה יכול להשתמש ב-nginx בתור פרוקסי ל-apache, ל-apache יש המון פיצ'רים שאין ל-nginx למרות הייתרון שלו בחסכון שהוא נותן לך במשאבים של השרת.

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

http://blip.tv/jsconf/makinde-adeagbo-primer-facebook-s-2k-of-javascript-to-power-almost-all-interactions-3858673


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
ליל קיץ לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 14.2.10
10048 הודעות, 7 פידבק
   16:52   23.12.13   
אל הפורום  
  12. נכון  
בתגובה להודעה מספר 10
 
   grunt כפי שאמרת הוא task manager לניהול משימות שקשורות לקבצים.

בקשר ל apache, לא יודע על איזה יתרונות אתה מדבר. חוץ מ htaccess שפשוט רגילים אליו ואפשר בקלות ליצור כל דבר אחר על nginx,
אני לא רואה שום יתרון.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
BomBast 
חבר מתאריך 20.6.04
8617 הודעות
   15:46   23.12.13   
אל הפורום  
  11. תודה רבה חברים עזרתם לי מאוד ואני אסיר תודה לכל אחד מכם!  
בתגובה להודעה מספר 0
 
  


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Dr-serp
חבר מתאריך 24.12.13
47 הודעות
   14:02   24.12.13   
אל הפורום  
  13. תשמע יש באמת המון דרכים... קודם כל תקרא את זה  
בתגובה להודעה מספר 0
 
   http://www.eliavsys.com/2013/12/השפעת-זמן-טעינת-דף-על-קידום-האתר.html

אליאב ל.
https://www.facebook.com/EliavosBlog


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

תגובה מהירה  למכתב מספר: 
 
___________________________________________________________________

___________________________________________________________________
למנהלים:  נעל | תייק בארכיון | מחק | העבר לפורום אחר | מחק תגובות | עגן אשכול
       



© כל הזכויות שמורות ל-רוטר.נט בע"מ rotter.net