More Related Content Similar to Web performance - الجزء الثالث (20) More from anees abu-hmaid (20) Web performance - الجزء الثالث1. الرحيم الرحمن الله بسم
منه كان من ُدويزي ،
ً ّاجين ناداه من ُجيبيو ،
ً خفيا دعاه من ُحبي ،العالمين ّ
رب لله حمدلا
.العالمين ّ
رب لله حمدلا ،
ً ّارضي الوعد صادق كان من ويهدي ،
ً ّاوفي له كان من يكرمو ،
ً ّايِحي
Web performance - 3
(كيف
يعمل
،المتصفح
دورة
حياة
ال
Request
من
وإلى
)المستخدم
في
الثاني جزءلا
من مجموعة عن حدثنات السلسلة هذه من
تقع والتي المهمة والأجزاء العناوين
ضمن
دائرة
ال
Web Performance
،
والتي
تؤثر
بشكل
مباشر
وحقيقي
أو
بشكل
خيليت
على
…بالأداء المتعلقة المشاكل بعض جةلمعا يمكن وكيف ،الأداء
كيف ندرك أن دون ومواضيع مصطلحات من عنه حدثنات ما نفهم أن يمكن كيف ،لكن
يتعامل
المتصفح
مع
ال
content
،؟
إن
إدراك
ما
حدثي
من
عمليات
مهم
لفهم
ما
حدثي
عند
ال
content render
،
وبناء
على
ذلك
يمكنك
فهم
المشاكل
المتعلقة
بالأداء
بشكل
:يلي ما يشمل وهذا ،أفضل
How the browser works
:
عند
قيامك
بوضع
رابط
الموقع
الذي
ترغب
في
الذهاب
إليه
في
المتصفح
ومن
ثم
ضغط
Enter
،
فإن
ما
حدثي
هو
أن
المتصفح
سيقوم
بالبحث
عن
ال
server
الذي
يملك
الملفات
خاصةلا
بالموقع
،المطلوب
ثم
سيقوم
بفتح
connection
مع
هذا
ال
server
،
ثم
يقوم
بطلب
ال
files
التي
حتاجهاي
لعرض
الموقع
على
،المتصفح
وهذا
يقودنا
تطبيق عن عبارة المتصفحات أولا ،ندركها أن لنا ينبغي والتي المهمة التفاصيل لبعض
2. single threaded
(ونقصد
بهذا
العمليات
التي
حدثت
حتى
إنشاء
حتوىمال
في
الصفحة
أو
العمليات
التي
تتم
على
ال
frontend
،)
وهذه
نقطة
مهمة
جدا
للتعامل
مع
مشاكل
،الأداء
فمشاكل
الأداء
الرئيسية
تنقسم
إلى
،جزئين
الأول
متعلق
بال
Latency
والثاني
المشاكل
مع تعامله يقةوطر المتصفح إلى النظر خلال من المتصفح على العمليات تنفيذ يقةبطر المتعلقة
الأوامر
والفعاليات
على
frontend
باعتباره
single threaded
،
ماكو
حدثنات
في
جزءلا
السابق
عن
ل
latency
،
فإننا
جبي
أن
نهتم
بتقليل
وقت
ال
latency
قدر
الإمكان
لتحسين
،الأداء
يكونو
الهدف
عن
المطور
هو
إرسال
information request
أسرع
ما
،يمكن
يكونو
دور
المطور
في
التعامل
مع
المتصفح
باعتباره
single thread
وهدفه
ضمان
جودة
التفاعل
وكفاءتها
مع
الموقع
،الإلكتروني
وهذا
يشمل
عدة
أجزاء
أهمها
التأكد
من
أن
ال
main
thread
ستقوم
جازنبإ
جميع
الأعمال
المطلوبة
منها
ومستعدة
ًامدو
للتجاوب
مع
العمليات
التي
عدد تقليل على القدرة هو ،جزئيةلا هذه فهم في هنا جميلةلا النقطة وتكمن ،المستخدم بها يقوم
العمليات
والمسؤوليات
الموجودة
على
ال
main thread
إن
أمكن
،ذلك
وذلك
سيضمن
حسينت
الأداء
من
خلال
التأكد
من
أن
ال
render
سيكون
سلس
والوقت
اللازم
للتفاعل
عمل يقةطر على العامة النظرة هذه بعد والآن ،…يةفور جاوبت سرعة يوفر مما أفضل
:أكثر التفاصيل ببعض لندخل ،المتصفح
i
.
هو الكتروني موقع يارةز في ورغبتك المتصفح مع تعاملك أثناء تتم عملية أول
عمل
Navigation
للموقع
،المطلوب
أكان
ذلك
من
خلال
ال
url
أو
من
خلال
رابط
موجود
في
صفحة
ما
أو
من
خلال
form
…إلى
،آخره
عادة
هذه
خلال من يتم غالبا عليها السلبي والتأثير ،كبيرا وقتا تستغرق ولا يعةسر العملية
مشاكل
ال
bandwidth
وال
latency
.
3. ii
.
DNS Lookup
:
ال
DNS
هي
اختصار
ل
Domain Name System
،
مبسط وبشكل ،للويب التحتية بالبنية خاصةلا المهمة البروتوكولات أحد وهو
فيه نكتب كنا الذي (الدفتر الهاتف دفتر بوظيفة يقوم البروتوكول هذا فإن
الذهاب حاولن والذي معين موقع بطلب المتصفح يقوم ،)الهاتف ورقم الإسم
،إليه
هذا
الموقع
له
عنوان
على
شبكة
،الإنترنت
هذا
العنوان
يسمى
IP
address
،
هذا
ال
IP
لنحصل
عليه
يتم
التواصل
مع
ال
DNS
،
يقومو
ال
DNS
بدوره
بإرجاع
العنوان
خاصلا
بهذا
،الموقع
هذا
ال
request
هو
ال
initial request
،
بعد
ذلك
يتم
خزينت
ال
ip address
لبعض
،الوقت
وذلك
من جلبه يكفي بل ،أخرى مرة العنوان لطلب داعي فلا ،الأداء من حسني
ال
cache
…
iii
.
TCP Handshake
:
يعد
ال
TCP
بروتوكول
واحد
من
أهم
البروتوكولات
بعضهما مع الاتصال من مضيفين أو جهازين يمكن لأنه ،الشبكة على الموجودة
وتبادل
البيانات
فيما
،بينهم
ويحترم
ال
TCP
الترتيب
خاصلا
بالبيانات
التي
يتم
،إرسالها
لذلك
فهو
يضمن
أن
تكون
ال
packets
دائما
بنفس
الترتيب
الذي
أرسلت
،به
لكنك
تتسائل
،الآن
ما
هو
ال
handshake
،؟
جوابلوا
هو
أنها
عملية
يستخدمها
ال
TCP
كوسيلة
تفاوض
بين
جهازينلا
أو
المضيفين
على
ال
parameters
خاصةلا
،بالإتصال
حيثب
يعرف
ويمرر
كل
واحد
منهما
العملية هذه وتسمى ،البيانات إرسال قبل وإيابا ذهابا الآخر إلى المعلومات
three-way handshake
،
يتمو
تبادل
ال
messages
من
خلال
ثلاث
،عمليات
ويشار
إليها
ب
SYN, SYN-ACK, ACK
،
حيثب
تشير
ال
SYN
6. v
.
Response
:
في
هذه
،خطوةلا
الاتصال
يكون
قد
بدأ
بالفعل
بين
ال
web
server
وال
client
،
وما
يقوم
به
المتصفح
في
هذه
خطوةلا
هو
إرسال
Initial
HTTP GET Request
،
ومن
ثم
يقوم
ال
server
بالرد
على
هذا
ال
request
مع
معلومات
مفيدة
في
ال
response header
أي..
أن
ال
response
حتويي
Header & Body
،…
وهنا
نأتي
إلى
نقطة
،مهمة
وهي
أن
الوقت
المستغرق
من
حظةل
إنشاء
ال
request
(يشمل
ال
DNS, TCP,
TLS
)
واستقبال
أول
packet
يطلق
عليه
TTFB
،
وهي
اختصار
ل
Time
to First Byte
،
يتمو
حسابها
بال
milliseconds
،
والمعادلة
خاصةلا
بها
بناء
على
المعطيات
التي
طرحناها
بالأعلى
:هي
TTFB = responseStart -
navigationStart
،
ومن
المعلومات
جميلةلا
التي
يمكنك
معرفتها
هي
أن
هناك
خوارزمية
يطلق
عليها
TCP slow start
،
هذه
خوارزميةلا
تقوم
على
يادةز
وضبط
سرعة
نقل
البيانات
بناء
على
ال
bandwidth
خاصلا
بالشبكة
وسرعة
،بالشبكة خاصةلا القدرة لمعرفة حاجةب لست أنك ببساطة والفكرة ،البيانات نقل
وإنما
تقوم
هذه
خوارزميةلا
بدلا
من
ذلك
بإرسال
packet
تبدأ
حجمب
صغير
ومن
ثم
تبدأ
المضاعفة
حجملل
مع
كل
packet
،
مثلا
14KB
أول
packet
،
الثانية
ستكون
28KB
والثالثة
56KB
…وهكذا
حتى
يتم
حديدت
أكبر
جمح
يمكن
التي البيانات بمعدل التحكم للشبكة تتيح أنها خوارزميةلا هذه في جميللا ،إرساله
يمكن
نقلها
مع
اختلاف
الأوقات
وانشغال
ال
server
مثلا…إلى
آخره
vi
.
Parsing
:
جردمب
أن
يستلم
المتصفح
أول
حزمة
من
،البيانات
فإن
عملية
ال
Parsing
للمعلومات
التي
تم
استقبالها
،تبدأ
وال
Parsing
هي
عملية
حليلت
8. render
،للشاشة
على
الأقل
جبي
أن
تضمن
أن
يكون
ال
css
وال
html
جاهزين
للاستخدام
في
أول
render
،
لاحظ
أهمية
الفهم
لما
حدثي
،هنا
فما
ستكون ،الأقل على أو ،الآن مفهوما ستجده ،السابقة المقالات في عنه حدثنات
…آخر أسلوب من بدلا الأداء لتحسين معين أسلوب باستخدام قمنا لماذا مدركا
vii
.
Render
:
في
هذه
خطوةلا
يتم
تضمين
ما
تم
إنتاجه
من
خطواتلا
،السابقة
أي
أن
ال
parse
خاصلا
بال
DOM
وال
CSSOM
سيتم
جهامد
داخل
ال
render tree
،
وذلك
لمشاهدة
النتائج
من
خلال
ال
style
وال
layout
وال
paint
وال
compositing
،
وال
style
هي
خطوةلا
الثالثة
من
ال
CRP
،
حيثب
يتم
بناء
ال
render tree
والتي
ستقوم
بدورها
بإخفاء
أي
عنصر
غير
ظاهر
(
display none
،)
يلي
ذلك
ال
Layout
وهو
خطوةلا
،الرابعة
حيثب
يقوم
ببناء
ال
layout
خاصلا
بال
render tree
،
ويشمل
ال
layout
ال
size
وال
position
خاصلا
بأي
node
،
يلي
ذلك
خطوةلا
خامسةلا
والأخيرة
لل
CRP
وهي
ال
Paint
،
وهي
عملية
رسم
ال
nodes
على
،الشاشة
جبيو
أن
يتم
هذا
كله
من
قبل
المتصفح
في
زمن
أقل
من
16.67ms
،
يأتي
بعد
هذا
ال
Compositing
،
وهي
تأتي
في
حال
وجود
أكثر
من
layer
على
عدة
من فيكون ،عليهم للرسم حاجة وهناك ،بينها فيما تداخلات وهناك ياتمستو
ال وظيفة وهذه ،الصحيح بشكلها ياتالمستو هذه ترتيب ضمان هنا الضروري
compositing
.
viii
.
Interactivity
:
بعد
أن
يتم
رسم
ال
blocks
على
الشاشة
في
خطوةلا
،السابقة
ال مع والتعامل للتفاعل قابلة الصفحة هل وهي ،أخيرة نقطة هناك يبقى
9. events
خاصةلا
بالمستخدم؟
كم
كانت
المدة
الزمنية
ليستطيع
المستخدم
التعامل
حتى يلاطو وقتا استغرق لكن ،فعلا يعسر الموقع تحميل كان لو ،الموقع؟ مع
يستطيع
المستخدم
عمل
scroll
،
فهل
تظن
أن
هذه
good UX
،؟
بكل
تأكيد
جربةت سيعطي فهو تأخر إذا التفاعل وقت أن خصوصا ،مهمة الأسئلة هذه
الزمن هذا لقياس مفهوم هناك لذلك ،!جدا يعسر الموقع تحميل كان وإن سيئة
يطلق
عليه
TTI
،
وهي
اختصار
ل
Time to Interactive
،
وقد
حدثنات
عنه
،…سابقا
وهناك
مفهوم
آخر
للقياس
ويرمز
له
ب
FCP
،
وهي
اختصار
ل
First Contentful Paint
،
وهو
الوقت
المستغرق
حتى
حظةل
render
أول
bit
من
حتوىمال
الموجود
بال
DOM
…
:ملاحظات
●
هناك
مفهوم
يسمى
ب
(
Critical rendering path (CRP
،
هذا
المفهوم
غالبا
قد
خطواتلا من مجموعة بأنه القول فيمكن ،هو ما تتسائل كنت إن لكن ،سابقا رأيته
التي
تمر
من
خلال
المتصفح
يللتحو
ال
HTML
وال
CSS
وال
JS
إلى
pixels
على
حسينتب قمت إذا ،وطولها خطواتلا سلسلة مع بقوة يرتبط الأداء حسينت إن ،الشاشة
يشمل المفهوم هذا ،تأكيد وبكل ،…ممتازا أداء ذلك سيعكس تأكيد فبكل ،السلسلة
DOM, CSSOM
وال
render tree
وال
layout
،
،لكن
،احذر
إذا
كان
البناء
،سيئا
فإنك
ستقع
فيما
يطلق
عليه
Jank
،
وال
Jank
مصطلح
يشير
إلى
البطء
في
ال
user interface
،
وعادة
ما
ينتج
ذلك
من
خلال
تنفيذ
long task
على
ال
main
thread
،
أو
بسبب
وجود
block rendering
…إلى
،آخره
إن
خطواتلا
المستخدمة
11. ●
شكل على المتصفح عمل بآلية خاصةلا خطواتلا بوضع قمت ،المقال في التعقيد لتقليل
نقاط
،منفصلة
لكن
اعلم
أن
Navigation
موضوع
يشمل
كل
من
ال
DNS, TCP,
TLS
،
كذلك
و
المواضيع
،…التالية
هذا
التبسيط
لن
يغير
،شيء
سوى
ضبط
…العناوين
…الله بإذن الرابع جزءلا في يتبع