أساسيات الإنترنت والشبكات | تطوير الويب وتحسين محركات البحث
التخزين المؤقت وملفات تعريف الارتباط: ذاكرة الويب
by محمد قتيبة شيخاني | أكتوبر 5, 2025 | 0 comments
في مقالاتنا السابقة، استكشفنا الآليات التأسيسية للإنترنت. تعلمنا كيف تجري المتصفحات والخوادم محادثات باستخدام HTTP، وكيف تجد عناوين بعضها البعض باستخدام DNS.
لكن خاصية أساسية اكتشفناها هي أن هذه الأنظمة مصممة لتكون "عديمة الحالة" أو كثيرة النسيان إلى حد كبير.
إذًا، كيف يبدو الويب سريعًا وشخصيًا؟ كيف يتذكر موقع ويب أنك مسجل الدخول، أو يتم تحميله فورًا في زيارتك الثانية؟
يكمن الجواب في آليتين ذكيتين تمنحان الويب "ذاكرة": التخزين المؤقت للويب (Web Caching) وملفات تعريف الارتباط (HTTP Cookies).
هذا المقال هو دليلك المفصل لفهم هذين المفهومين الأساسيين اللذين يجعلان تجربة الويب الحديثة ممكنة.
الجزء الأول: التخزين المؤقت للويب (ذاكرة السرعة)
المشكلة: عبثية التكرار
تخيل أنك بحاجة لقراءة فصل معين من كتاب مرجعي ثقيل. في المرة الأولى، تقوم بالرحلة الطويلة إلى المكتبة المركزية، تنتظر في الطابور، وتأخذ الكتاب.
الآن، ماذا لو احتجت لقراءة نفس الفصل مرة أخرى في اليوم التالي؟ سيكون من العبث وغير الفعال بشكل لا يصدق القيام بنفس الرحلة الطويلة في كل مرة للحصول على نفس المعلومة التي لم تتغير.
هذا بالضبط ما سيحدث على الويب بدون التخزين المؤقت. في كل مرة تزور فيها صفحة، سيتعين على متصفحك إعادة تنزيل كل أصل من الأصول — الشعار، ملفات CSS، ملفات JavaScript — من الخادم الأصلي، حتى لو لم تتغير.
هذا يهدر وقتك، يستهلك باقة الإنترنت الخاصة بك، ويزيد العبء على الخادم دون أي داعٍ.
الحل العبقري: التخزين المؤقت (Caching)
التخزين المؤقت (Caching) هو مبدأ بسيط وعبقري في عالم الحاسوب: احتفظ بنسخة من الأشياء التي تستخدمها بشكل متكرر في مكان قريب جدًا منك.
إنه عملية تخزين نسخ من الملفات في موقع تخزين مؤقت وأقرب (يسمى cache) ليتم الوصول إليها بسرعة أكبر في المستقبل.
"الكيفية": طبقات الذاكرة المؤقتة للويب
هناك عدة طبقات من التخزين المؤقت تعمل معًا لتسريع الويب، لكن اثنتين هما الأهم بالنسبة لنا:
1. ذاكرة التخزين المؤقت للمتصفح (Browser Cache): الكتاب على طاولة قهوتك
التشبيه: هذه هي الطبقة الأقرب إليك. هي تشبه الاحتفاظ بالكتاب على طاولة القهوة الخاصة بك بعد عودتك من المكتبة.
في المرة القادمة التي تريد قراءته، كل ما عليك فعله هو مد يدك.
كيف تعمل بالتفصيل؟كل متصفح ويب (كروم، فايرفكس، إلخ) لديه مجلد خاص على القرص الصلب لجهازك مخصص للتخزين المؤقت.
الزيارة الأولى: عندما تزور موقعًا لأول مرة، يقوم المتصفح بتنزيل كل الأصول الثابتة (CSS, JS, الصور).
يمكن للخادم أن يرفق مع كل ملف "بطاقة تعليمات" (وهي ترويسة Cache-Control التي تعلمناها في مقال HTTP)، تقول: "هذا الملف صالح لمدة أسبوع".
الزيارة الثانية: عندما تعود إلى نفس الموقع، يقوم المتصفح أولاً بالنظر في ذاكرته المحلية. يرى ملف style.css ويتحقق من "بطاقة التعليمات" الخاصة به.
إذا كانت لا تزال صالحة، فإنه لا يرسل أي طلب إلى الإنترنت على الإطلاق. يقوم بتحميل الملف مباشرة من القرص الصلب الخاص بك.
التأثيرتحميل ملف من قرصك الصلب أسرع بآلاف المرات من تنزيله من خادم يبعد آلاف الكيلومترات. هذا هو السبب في أن المواقع التي تزورها باستمرار تبدو وكأنها تفتح بشكل فوري.
2. ذاكرة التخزين المؤقت لشبكة توصيل المحتوى (CDN Cache): فرع المكتبة في حيك
ذاكرة المتصفح رائعة للزوار المتكررين. لكن ماذا عن الزائر الذي يأتي لأول مرة؟ هنا يأتي دور شبكة توصيل المحتوى (CDN).
التشبيه: إذا كان خادمك الرئيسي هو "المكتبة المركزية" في بلد بعيد، فإن الـ CDN هو شبكة من "فروع المكتبة الصغيرة" المنتشرة في كل حي رئيسي حول العالم.
مخطط توضيحي لشبكة توزيع المحتوى (Content Delivery Network - CDN)، يوضح كيفية توزيع محتوى الموقع من الخادم الأصلي (Origin Server) إلى خوادم الحافة (Edge Servers) الموزعة عالمياً، مما يضمن وصول المستخدمين إلى المحتوى من أقرب نقطة لهم بسرعة عالية.
كيف تعمل بالتفصيل؟
كما قدمنا في مقال الاستضافة، فإن CDN هي شبكة من الخوادم (تسمى الخوادم الطرفية - Edge Servers) موزعة جغرافيًا.
الطلب الأول في منطقة ما: عندما يطلب مستخدم من إسطنبول صورة من موقعك (المستضاف في أمريكا)، يقوم نظام DNS بتوجيه طلبه بذكاء إلى أقرب خادم طرفي للـ CDN، وليكن في إسطنبول.
التخزين المؤقت على الحافة: يقوم الخادم الطرفي في إسطنبول بطلب الصورة من الخادم الأصلي في أمريكا مرة واحدة فقط.
يسلمها للمستخدم، وفي نفس الوقت، يحتفظ بنسخة منها لديه.
الطلبات اللاحقة في نفس المنطقة: الآن، عندما يطلب أي مستخدم آخر في تركيا نفس الصورة، فإن الخادم الطرفي في إسطنبول يسلمها له مباشرة من ذاكرته المحلية، دون الحاجة إلى القيام بالرحلة الطويلة إلى أمريكا مرة أخرى.
التأثيرالـ CDN يقلل بشكل هائل من زمن الوصول (Latency) — أي التأخير الناتج عن المسافة المادية. هذا هو العامل الأهم لتحسين سرعة الموقع للجمهور العالمي، وهو جزء أساسي من السيو التقني.
الخلاصة: هاتان الطبقتان تعملان معًا بتناغم: ذاكرة المتصفح المؤقتة تخدم الزائر الواحد في زياراته المتكررة.
وذاكرة الـ CDN المؤقتة تخدم جميع الزوار في منطقة جغرافية معينة.
كلاهما ضروريان لتقديم تجربة ويب سريعة وحديثة.
الجزء الثاني: ملفات تعريف الارتباط (ذاكرة الهوية)
المشكلة: بروتوكول بذاكرة السمكة الذهبية
كما تعلمنا بعمق في مقالنا عن بروتوكول HTTP، فإنه بطبيعته "عديم الحالة" (Stateless). كل طلب يتم إرساله إلى الخادم هو حدث مستقل تمامًا.
الخادم لا يملك أي ذاكرة فطرية لطلباتك السابقة.
تخيل لو كان الويب يعمل هكذا حقًا:
- ستقوم بتسجيل الدخول، ثم عند النقر على رابط "ملفك الشخصي"، سيطلب منك الموقع تسجيل الدخول مرة أخرى.
- ستضيف منتجًا إلى عربة التسوق، ثم عند الانتقال إلى صفحة منتج آخر، ستجد أن عربة التسوق قد أفرغت نفسها.
سيكون الويب مستحيل الاستخدام. لحل هذه المشكلة الأساسية، تم اختراع حل ذكي وبسيط: كوكيز HTTP.
الحل: الكوكيز (بطاقة هويتك المؤقتة)
الكوكيز هي قطع نصية صغيرة جدًا يطلب الخادم من المتصفح تخزينها على جهازك. تعمل كبطاقة هوية أو ذاكرة قصيرة المدى، تسمح للخادم بتذكرك بين الطلبات المختلفة.
التشبيه: الكوكيز تشبه "ختم اليد" الذي تحصل عليه في فعالية.
في المرة الأولى التي تظهر فيها تذكرتك (تسجيل الدخول)، يمنحك الموظف (الخادم) ختمًا فريدًا.
الآن، في كل مرة تريد فيها دخول منطقة جديدة (طلب صفحة جديدة)، لا تحتاج لإظهار تذكرتك مرة أخرى؛ تظهر فقط ختمك، فيتعرف عليك الموظفون على الفور.
"الكيفية" (سير العمل)
العملية هي استخدام أنيق لترويسات HTTP التي تعلمناها:
- عندما تقوم بإجراء (مثل تسجيل الدخول)، يرسل الخادم استجابة تحتوي على ترويسة
Set-Cookieمع معرّف فريد. - يقوم متصفحك بتخزين هذا الكوكيز.
- في كل طلب مستقبلي لنفس الموقع، يقوم متصفحك تلقائيًا بتضمين ترويسة
Cookieمع ذلك المعرّف. - يقرأ الخادم هذا المعرّف، "يتذكرك"، ويقدم لك المحتوى المخصص.
تشريح الكوكيز: ليست كل الكوكيز متشابهة
لفهم الكوكيز بشكل أعمق، يجب أن نعرف أن هناك أنواعًا مختلفة، لكل منها غرض مختلف:
1. كوكيز الطرف الأول مقابل كوكيز الطرف الثالث (First-Party vs. Third-Party)
. كوكيز الطرف الأول (First-Party Cookies): ذاكرة الموقع نفسهالتشبيه: فكر في كوكيز الطرف الأول على أنها "بطاقة العضوية" أو "بطاقة الولاء" لمتجر معين تزوره.
هي مفيدة للغاية داخل هذا المتجر، لكنها عديمة القيمة في أي متجر آخر.
ما هي بالتحديد؟هي ملفات تعريف الارتباط التي يضعها النطاق الذي تزوره أنت مباشرة ويظهر في شريط عنوان متصفحك.
إذا كنت على موقع example.com، فإن أي كوكيز يضعها خادم example.com تعتبر كوكيز طرف أول.
عندما تطلب صفحة من example.com، فإن استجابة HTTP من خادم example.com تحتوي على ترويسة Set-Cookie.
يقوم متصفحك بتخزين هذا الكوكيز ويربطه حصريًا بنطاق example.com.
وظيفتها مرتبطة مباشرة بتجربتك على هذا الموقع المحدد. هي ضرورية للوظائف الأساسية التي نعتبرها أمرًا مفروغًا منه:
- إدارة الجلسات: إبقاؤك مسجل الدخول (
session_id). - حفظ عربة التسوق: تذكر المنتجات التي أضفتها وأنت تتنقل بين الصفحات.
- التخصيص: تذكر تفضيلاتك، مثل اللغة التي اخترتها (
lang=ar) أو أنك تفضل "الوضع الليلي" (theme=dark).
الخلاصة: كوكيز الطرف الأول هي جزء حميد وأساسي من تجربة الويب الحديثة. هي تحسن من وظائف الموقع وتجعل تفاعلك معه أكثر سلاسة.
2. كوكيز الطرف الثالث (Third-Party Cookies): "المتعقبون" غير المرئيين
التشبيه: إذا كانت كوكيز الطرف الأول هي بطاقة عضويتك في متجر معين، فإن كوكيز الطرف الثالث تشبه "شركة بطاقات الائتمان" أو "وكالة بيانات" تراقبك.
عندما تستخدم بطاقتك الائتمانية في المتجر "أ"، والمتجر "ب"، والمقهى "ج"، فإن كل متجر يعرف فقط ما اشتريته منه.
لكن شركة بطاقات الائتمان (الطرف الثالث) تعرف أنك زرت الأماكن الثلاثة جميعها، وتعرف بالضبط ماذا اشتريت في كل منها، وتبني ملفًا كاملاً عن عاداتك الشرائية.
ما هي بالتحديد وكيف تصل إلى جهازك؟هي ملفات تعريف الارتباط التي يضعها نطاق مختلف عن النطاق الذي تزوره. هذا يحدث عندما يقوم الموقع الذي تزوره بتضمين موارد من مواقع أخرى. أشهر الأمثلة:
- الإعلانات: عندما يضع موقع إخباري إعلانًا من شبكة إعلانية مثل
doubleclick.net. - أزرار المشاركة الاجتماعية: زر "أعجبني" الخاص بفيسبوك هو في الحقيقة قطعة كود يتم تحميلها من
facebook.com. - خدمات التحليل: بعض خدمات التحليل الخارجية.
عندما يقوم متصفحك بتحميل هذا المورد الخارجي (الإعلان مثلاً)، فإنه يرسل طلب HTTP إلى خادم الطرف الثالث (doubleclick.net).
يقوم هذا الخادم بالرد مع ترويسة Set-Cookie الخاصة به، فيقوم متصفحك بتخزين كوكيز لنطاق doubleclick.net، على الرغم من أنك لم تزر هذا الموقع أبدًا بشكل مباشر.
الآن، عندما تغادر الموقع الإخباري وتذهب إلى مدونة عن الطبخ تعرض أيضًا إعلانًا من نفس الشبكة (doubleclick.net)، سيقوم متصفحك تلقائيًا بإرسال الكوكيز الذي خزنه سابقًا.
يتعرف خادم الشبكة الإعلانية على الكوكيز ويقول: "آه، هذا هو نفس الشخص الذي كان يقرأ عن السياسة قبل 5 دقائق، وهو الآن مهتم بالطبخ".
بهذه الطريقة، تبني شبكات الإعلانات ملفًا تفصيليًا لاهتماماتك وتاريخ تصفحك عبر آلاف المواقع لتقديم إعلانات مستهدفة.
الجدل والمستقبل (لماذا هي في طريقها إلى الانقراض)هذا النوع من التتبع هو محور الجدل العالمي حول الخصوصية لأنه يحدث في الخلفية وغالبًا دون وعي أو موافقة صريحة من المستخدم.
ردًا على هذه المخاوف، اتخذت صناعة المتصفحات إجراءات صارمة:
متصفحات Safari (عبر ميزة ITP) و Firefox (عبر ميزة ETP) تقوم بحظر كوكيز الطرف الثالث افتراضيًا منذ سنوات.
جوجل كروم، وهو المتصفح الأكثر استخدامًا، في خضم عملية التخلص التدريجي من دعم كوكيز الطرف الثالث، ومن المتوقع أن تكتمل هذه العملية قريبًا جدًا، مستبدلة إياها بتقنيات جديدة أكثر حفاظًا على الخصوصية ضمن مبادرة "Privacy Sandbox".
2. كوكيز الجلسة مقابل الكوكيز الدائمة (Session vs. Persistent)
كوكيز الجلسةهي كوكيز مؤقتة يتم تخزينها في ذاكرة المتصفح النشطة فقط. يتم حذفها تلقائيًا بمجرد إغلاق المتصفح.
هي مثالية للمهام التي تستمر لجلسة واحدة فقط، مثل عربة التسوق.
كوكيز الدائمةهي كوكيز يتم تخزينها على القرص الصلب لجهازك ولها تاريخ انتهاء صلاحية محدد. هي التي تسمح للموقع بتذكرك حتى بعد إغلاق المتصفح وإعادة فتحه.
المثال الكلاسيكي هو مربع "تذكرني" (Remember Me) عند تسجيل الدخول.
حالات الاستخدام الشائعة
1. إدارة الجلسات: الوظيفة الأساسية. إبقاؤك مسجل الدخول، وإدارة عربات التسوق.
2. التخصيص: تذكر تفضيلاتك لتخصيص تجربتك. مثل تذكر أنك تفضل "الوضع الليلي" على الموقع، أو تذكر مدينتك لعرض الطقس المحلي.
3. التحليل والتتبع:
تحليلات الموقع (Analytics): تستخدم أدوات مثل Google Analytics كوكيز الطرف الأول للتمييز بين الزوار الجدد والعائدين، وفهم كيفية تنقل المستخدمين داخل موقعك.
الإعلانات: تستخدم شبكات الإعلانات كوكيز الطرف الثالث لعرض إعلانات مخصصة بناءً على سجل تصفحك عبر مواقع متعددة.
ذاكرة المتصفح الحديثة: واجهة برمجة تطبيقات تخزين الويب (LocalStorage و SessionStorage)
لقد رأينا كيف أن الكوكيز هي حل ذكي لمشكلة عدم الحالة في HTTP، حيث تعمل كـ "ختم يد" لتعريف المستخدم مع الخادم.
لكن للكوكيز حدودها: حجم تخزينها صغير جدًا (حوالي 4 كيلوبايت)، والأهم من ذلك، يتم إرسالها إلى الخادم مع كل طلب HTTP، مما قد يضيف بيانات غير ضرورية ويبطئ الاتصال قليلاً.
هذا يطرح سؤالاً: "ماذا لو أردت أن يتذكر المتصفح أشياء هي فقط لصالح المستخدم على الصفحة، دون الحاجة لإخبار الخادم بها في كل مرة؟"
لحل هذه المشكلة، قدمت المتصفحات الحديثة طريقة أكثر قوة وكفاءة لتخزين البيانات من جانب العميل: واجهة برمجة تطبيقات تخزين الويب (Web Storage API).
ما هي واجهة برمجة تطبيقات تخزين الويب؟
هي طريقة بسيطة وآمنة لصفحة الويب لتخزين البيانات على شكل أزواج من "المفتاح والقيمة" مباشرة داخل متصفح المستخدم.
فكر فيها كأنك تمنح موقعك قاعدة بيانات صغيرة وخاصة على جهاز المستخدم. هذه البيانات لا يتم إرسالها إلى الخادم مع كل طلب، مما يجعلها مثالية لتخزين تفضيلات المستخدم وحالة التطبيق.
توفر هذه الواجهة آليتي تخزين متشابهتين ولكنهما مختلفتان:
1. LocalStorage: خزنة موقعك الشخصية الآمنة
التشبيه: فكر في LocalStorage على أنه "خزنة صغيرة وآمنة" يضعها موقعك داخل متصفح المستخدم. يمكن للموقع وضع أشياء في الخزنة واستعادتها لاحقًا، وستبقى هذه العناصر هناك إلى أجل غير مسمى.
دائمة: البيانات المخزنة في LocalStorage ليس لها تاريخ انتهاء صلاحية. تبقى محفوظة حتى بعد أن يغلق المستخدم المتصفح ويعيد تشغيل حاسوبه.
لا يتم حذفها إلا إذا قام المستخدم بمسح بيانات متصفحه يدويًا أو قام تطبيق الويب بحذفها.
سعة كبيرة: توفر سعة تخزين أكبر بكثير من الكوكيز، تصل عادة إلى 5-10 ميجابايت لكل نطاق.
خاصة بالمصدر: البيانات معزولة؛ example.com يمكنه الوصول فقط إلى LocalStorage الخاص به، ولا يمكنه قراءة البيانات التي يخزنها google.com.
// لحفظ البيانات
localStorage.setItem('theme', 'dark');
// لاسترداد البيانات
let userTheme = localStorage.getItem('theme'); // ستكون قيمة userTheme هي 'dark'
// لإزالة البيانات
localStorage.removeItem('theme');
حالة استخدام عملية : الاستخدام المثالي لـ LocalStorage هو تذكر تفضيلات المستخدم عبر الزيارات. عندما ينقر المستخدم على زر "الوضع الليلي"، تقوم بحفظ اختياره في LocalStorage.
في المرة القادمة التي يزور فيها موقعك، يتحقق JavaScript أولاً من LocalStorage لمعرفة ما إذا كان هناك تفضيل للمظهر ويقوم بتطبيقه تلقائيًا.
2. SessionStorage: سبورة بيضاء لاجتماع واحد
التشبيه: فكر في SessionStorage على أنه "سبورة بيضاء في غرفة اجتماعات".
يمكنك كتابة الملاحظات والبيانات عليها أثناء الاجتماع، ويمكن للجميع في الغرفة رؤيتها. ولكن بمجرد انتهاء الاجتماع (إغلاق التبويب)، يأتي عامل ويمسح السبورة بالكامل.
الخصائص الرئيسيةخاص بالجلسة فقط: البيانات المخزنة في SessionStorage متاحة فقط لمدة جلسة تبويب المتصفح.
عندما يغلق المستخدم علامة التبويب أو المتصفح، يتم حذف جميع البيانات الموجودة في SessionStorage تلقائيًا.
واجهة برمجة تطبيقات متطابقة: يستخدم نفس أوامر LocalStorage تمامًا (setItem, getItem, removeItem)، لكن الكائن هو sessionStorage.
هو مثالي لتخزين المعلومات المؤقتة التي لا ينبغي أن تستمر إلى الأبد. على سبيل المثال، في نموذج متعدد الخطوات (مثل حجز رحلة طيران)، يمكنك حفظ مدخلات المستخدم من الخطوة 1 في SessionStorage.
إذا قام بتحديث الصفحة عن طريق الخطأ وهو في الخطوة 2، يمكن لـ JavaScript استرداد البيانات من SessionStorage وإعادة ملء الحقول من الخطوة 1، حتى لا يفقد عمله.
ولكن بمجرد أن ينهي الحجز ويغلق علامة التبويب، لم تعد هذه البيانات المؤقتة ضرورية وتختفي.
الخلاصة:
بإضافة واجهة برمجة تطبيقات تخزين الويب إلى صندوق أدواتك إلى جانب الكوكيز، فإنك تكتسب طريقة قوية ومرنة لإدارة البيانات.
يمكنك الآن استخدام الكوكيز لغرضها المخصص (إدارة الجلسات من جانب الخادم) واستخدام LocalStorage / SessionStorage لجميع احتياجات التخزين من جانب العميل، مما يخلق تطبيقات ويب أسرع وأكثر كفاءة.
طبقات الذاكرة المتعددة للويب
في هذا الدليل، قمنا بالغوص في "عقل" الويب لنفهم كيف يتذكر. لقد رأينا أن الويب لا يمتلك ذاكرة واحدة، بل نظام ذاكرة متطور ومتعدد الطبقات، كل طبقة لها وظيفتها الفريدة.
- تعرفنا على التخزين المؤقت (Caching)، "ذاكرة السرعة" التي تحتفظ بنسخ من المحتوى لتقديمه فورًا.
- ثم استكشفنا الكوكيز (Cookies)، "ذاكرة الهوية" الكلاسيكية التي تسمح للخادم بتذكر جلساتنا.
- وأخيرًا، اكتشفنا واجهة برمجة تطبيقات تخزين الويب (LocalStorage و SessionStorage)، "الذاكرة الحديثة" التي تمنح تطبيقات الويب القوة والكفاءة.
فهم هذه الآليات الثلاث هو مفتاح بناء تجارب ويب استثنائية.
أنت الآن تعرف كيف تجعل موقعك سريعًا كالبرق عبر التخزين المؤقت، وكيف تبني تجارب شخصية ووظيفية عبر الكوكيز، وكيف تعزز واجهاتك الأمامية بأدوات التخزين الحديثة.
هذه ليست مجرد تفاصيل تقنية؛ بل هي الأدوات الأساسية التي تحول الصفحات الثابتة إلى تطبيقات حية وذكية.
شارك هذا الموضوع:
- المشاركة على X (فتح في نافذة جديدة) X
- شارك على فيس بوك (فتح في نافذة جديدة) فيس بوك
- المشاركة على Telegram (فتح في نافذة جديدة) Telegram
- المشاركة على WhatsApp (فتح في نافذة جديدة) WhatsApp
معجب بهذه:
إعجاب جاري التحميل…كيف يعمل الإنترنت | محتوى تقني عربي | أساسيات المطور المحترف | أساسيات الإنترنت | تطوير الويب
محمد قتيبة شيخاني
متخصص SEO وباحث عن المعرفة. أتنقل بين سطور الكود وصفحات الكتب بحثاً عن الحكمة، غايتي إثراء المحتوى العربي وتطوير الذات والمجتمع.
مقالات قد تهمك

الموجه (Router): شرطي المرور الذكي الذي يحكم الإنترنت
يناير 9, 2026

العمود الفقري للإنترنت (Internet Backbone): كيف يربط كابل واحد العالم ببعضه؟
يناير 9, 2026

UI/UX: فن وعلم تصميم تجربة المستخدم
أكتوبر 23, 2025
« Older Entries