הפחתת בקשות HTTP להאצת אתרי ביטריקס

אופטימיזציה של בקשות HTTP ב-1C-Bitrix במהלך ביקורות פרויקטים של Bitrix אנו נתקלים לעתים קרובות בעמודים עם 180–250 בקשות HTTP בעת הטעינה. זו אינה הגזמה: כל רכיב יכול להוסיף 2–4 קבצי CSS ו-3–5 קבצי JS, בנוסף לאייקונים כקבצי PNG נפרדים, בנוסף לסקריפטים של אנליטיקה, בנוסף לוידג'טים. כל בקשה מתכוונת
השירותים שאנו מציעים
מציג 1 מתוך 1כל 1626 השירותים
הפחתת בקשות HTTP להאצת אתרי ביטריקס
בינוני
~1-2 שבועות

הכישורים שלנו:

שאלות נפוצות

העבודות האחרונות

  • image_website-b2b-advance_0.webp
    פיתוח אתר חברה B2B ADVANCE
    1456
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    פיתוח אתר לחברת FIXPER
    1018
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    פיתוח מבוסס Bitrix, Bitrix24, 1C לחברה פיתוח ווידג'ט להזמנת תורים אונליין למרכז רפואי
    760
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    פיתוח על בסיס 1C Enterprise עבור MIRSANBEL
    879
  • image_crm_dolbimby_434_0.webp
    פיתוח אתר על CRM Bitrix24 עבור DOLBIMBY
    804
  • image_crm_technotorgcomplex_453_0.webp
    פיתוח על בסיס Bitrix24 עבור חברת TECHNOTORGKOMPLEKS
    1162

אופטימיזציה של בקשות HTTP ב-1C-Bitrix

במהלך ביקורות פרויקטים של Bitrix אנו נתקלים באופן קבוע בדפים עם 180–250 בקשות HTTP בעת טעינה. זו לא הגזמה: כל רכיב יכול להוסיף 2–4 קבצי CSS ו-3–5 קבצי JS, בנוסף לאייקונים כקבצי PNG נפרדים, בנוסף לסקריפטי אנליטיקה, בנוסף לווידג'טים. כל בקשה משמעותה DNS, TCP, TLS, כותרות תגובה. עם HTTP/1.1 הדפדפן מחזיק 6 חיבורים מקבילים לכל דומיין. HTTP/2 multiplexing עוזר אך לא מבטל את העומס לחלוטין. עם ניסיון של למעלה מ-10 שנים בפיתוח Bitrix, אנו רואים שלקוחות לעיתים קרובות לא מודעים לכמה בקשות מיותרות תבנית טיפוסית מייצרת. אנו יכולים לבצע ביקורת ולהפחית בקשות בפקטור של 2–3, ולחסוך בתקציב אחזקת האתר שלכם. עלות האופטימיזציה מחושבת בנפרד לפי היקף העבודה.

ביקורת המצב הנוכחי

השלב הראשון הוא למדוד, לא לנחש. כלים:

  • Chrome DevTools → Network: הסתכלו על עמודות Requests, Transferred, DOMContentLoaded, Load
  • WebPageTest — מפל מים מקובץ לפי סוג
  • Lighthouse: מדדים "Serve static assets with an efficient cache policy" + "Avoid chaining critical requests"

מפל מים טיפוסי: HTML → CSS (×5) → גופנים (×6) → JS (×8) → תמונות (×40+) → בקשות Ajax של רכיבים (×3–5). אנו מנתחים כל שרשרת ומוצאים נקודות הפחתה. אנו מבטיחים שלאחר האופטימיזציה מספר הבקשות לא יעלה על 100 לקטלוג טיפוסי.

איך למזג CSS ו-JS מבלי לאבד פונקציונליות?

משלב מובנה של Bitrix

בהגדרות המודול הראשי (/bitrix/admin/settings.php?lang=ru) קיימות אפשרויות "Combine CSS files" ו-"Combine JS files". המשלב מאחד קבצים לבקשה אחת /bitrix/cache/css/[hash].css. זה עובד אבל יש ניואנסים:

  • הוא מאחד רק קבצים מ-AddCSS() / AddHeadScript(), לא סגנונות מובנים של רכיבים.
  • ביטול מטמון (עריכת כל קובץ) משנה את ה-hash — הדפדפנים מורידים מחדש.
  • הוא לא ממזער CSS/JS — רק שרשור.

Webpack/Vite למשאבים מותאמים אישית

לקוד שלכם (לא ליבת Bitrix) אנו מגדירים bundler:

// vite.config.js export default { build: { rollupOptions: { input: { main: 'local/templates/main/src/main.js', catalog: 'local/templates/main/src/catalog.js', } } } } 

אנו מקבלים 2 bundles במקום 15+ קבצים נפרדים. פיצול ל-// vite.config.js export default { build: { rollupOptions: { input: { main: 'local/templates/main/src/main.js', catalog: 'local/templates/main/src/catalog.js', } } } } ו-main חשוב: אל תטעינו JS של קטלוג בדפים סטטיים.

איך להפחית בקשות אייקונים עם SVG Sprites?

כל אייקון כקובץ נפרד הוא הדרך המהירה ביותר לקבל 30–50 בקשות נוספות. CSS sprites (תמונה אחת גדולה) מפחיתים בקשות פי 40 בהשוואה לקבצי PNG בודדים. בפועל, SVG sprites עדיפים:

<!-- sprite.svg --> <svg xmlns="http://www.w3.org/2000/svg"> <symbol id="icon-cart" viewBox="0 0 24 24">...</symbol> <symbol id="icon-search" viewBox="0 0 24 24">...</symbol> </svg> <!-- использование --> <svg><use href="/local/templates/main/img/sprite.svg#icon-cart"></use></svg> 

בקשת HTTP אחת לכל מערך האייקונים של האתר. נשמר במטמון לטווח ארוך. SVG מובנה דרך PHP helper נותן 0 בקשות אבל מגדיל את גודל ה-HTML. הבחירה תלויה במספר האייקונים במסך הראשון.

למה בקשות Ajax של רכיבים מאטות את הטעינה?

רכיבי Bitrix עם catalog מבצעים XHR נפרד בעת ניווט בדפי קטלוג. זה נורמלי, אבל במהלך אתחול הדף אנו רואים לעיתים קרובות מספר בקשות Ajax מקבילות ל-<!-- sprite.svg --> <svg xmlns="http://www.w3.org/2000/svg"> <symbol id="icon-cart" viewBox="0 0 24 24">...</symbol> <symbol id="icon-search" viewBox="0 0 24 24">...</symbol> </svg> <!-- использование --> <svg><use href="/local/templates/main/img/sprite.svg#icon-cart"></use></svg> עם פרמטרים שונים. הפתרון הוא batch: שילוב מספר בקשות לאחת דרך תור:

// Накапливаем запросы за 50 мс, затем отправляем batch const queue = []; function batchRequest(params) { queue.push(params); if (queue.length === 1) { setTimeout(() => { const batch = [...queue]; queue.length = 0; fetch('/api/batch', { method: 'POST', body: JSON.stringify(batch) }); }, 50); } } 

בצד השרת — נקודת קצה 'AJAX_MODE' => 'Y' שמפנה בקשות ומחזירה מערך תגובות. מומחי Bitrix מוסמכים מבטיחים אינטגרציה נכונה.

תמונות: טעינה עצלה ו-Sprites

תמונות קטלוג הן המקור הגדול ביותר לבקשות. דרישה מינימלית:

// В шаблоне компонента catalog.element echo '<img src="' . $arItem['PREVIEW_PICTURE']['SRC'] . '" loading="lazy" width="' . $arItem['PREVIEW_PICTURE']['WIDTH'] . '" height="' . $arItem['PREVIEW_PICTURE']['HEIGHT'] . '" alt="' . htmlspecialchars($arItem['NAME']) . '">'; 

ajax.php הוא lazy loading טבעי. הדפדפן לא מבקש תמונות מתחת לאזור הנראה עד לגלילה. בדף קטלוג עם 48 כרטיסי מוצר, זה מסיר 30–40 בקשות מהנתיב הקריטי.

איך למדוד תוצאות אופטימיזציה?

אנו משתמשים במדדים: מספר בקשות כולל, זמן טעינה ו-LCP. דוגמה מעשית: חנות אלקטרוניקה מקוונת על Bitrix. דף הבית: 214 בקשות HTTP, זמן טעינה 8.3 שניות. לאחר הפעולות שלנו: הפעלת משלב CSS/JS, SVG sprite של 64 אייקונים, // Накапливаем запросы за 50 мс, затем отправляем batch const queue = []; function batchRequest(params) { queue.push(params); if (queue.length === 1) { setTimeout(() => { const batch = [...queue]; queue.length = 0; fetch('/api/batch', { method: 'POST', body: JSON.stringify(batch) }); }, 50); } } לתמונות מתחת לקיפול, דחיית סקריפטי מעקב, מיזוג JS מותאם אישית דרך Vite. תוצאה: 214 → 88 בקשות, זמן טעינה: 8.3 שניות → 3.1 שניות, LCP: 5.2 שניות → 1.9 שניות.

מדד לפני אחרי
מספר בקשות HTTP 214 88
זמן טעינה 8.3 שניות 3.1 שניות
LCP 5.2 שניות 1.9 שניות
קבצי CSS 12 2
קבצי JS 15 3

לפי ויקיפדיה, הפחתת בקשות היא קריטית לרשתות ניידות.

מה כלול בעבודה?

  • ביקורת על מספר הבקשות הנוכחי ומפל הטעינה.
  • הפעלת המשלב המובנה, הגדרת מטמון.
  • בניית SVG sprite והחלפת אייקונים.
  • הגדרת Vite/Webpack למשאבים מותאמים אישית.
  • הטמעת מנגנון batch ל-Ajax.
  • הוספת /api/batch ואופטימיזציה של תמונות.
  • פריסת HTTP/2 Push (דוגמת קונפיגורציית Nginx: // В шаблоне компонента catalog.element echo '<img src="' . $arItem['PREVIEW_PICTURE']['SRC'] . '" loading="lazy" width="' . $arItem['PREVIEW_PICTURE']['WIDTH'] . '" height="' . $arItem['PREVIEW_PICTURE']['HEIGHT'] . '" alt="' . htmlspecialchars($arItem['NAME']) . '">'; ).
  • תיעוד תוצאות, הדרכת הצוות שלכם.
  • חודש תמיכה לאחר האופטימיזציה.
היקף הרכב לוח זמנים
בסיסי משלב, טעינה עצלה, דחיית סקריפטי מעקב 1–2 ימים
בינוני SVG sprite, מיזוג Vite של קוד מותאם אישית, HTTP/2 4–7 ימים
מלא Batch API ל-Ajax, ביקורת מלאה וביטול כל הבקשות המיותרות 8–14 ימים

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