אופטימיזציה של CSS קריטי עבור 1C-Bitrix: מדריך שלב-אחר-שלב

אופטימיזציה של CSS קריטי עבור 1C-Bitrix תרחיש טיפוסי: אתר Bitrix טוען שלושה עד ארבעה קבצי CSS בהיקף כולל של 300–600 KB. הדפדפן חוסם את העיבוד עד שכל ה-CSS נטען – זה נקרא חסימת עיבוד. כתוצאה מכך, **FCP** מגיע ל-3–5 שניות בחיבור נייד גם עם מטמון. אנו פותרים את ה-
השירותים שאנו מציעים
מציג 1 מתוך 1כל 1626 השירותים
אופטימיזציה של CSS קריטי עבור 1C-Bitrix: מדריך שלב-אחר-שלב
בינוני
~1-2 שבועות

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

שאלות נפוצות

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

  • image_website-b2b-advance_0.webp
    פיתוח אתר חברה B2B ADVANCE
    1458
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    פיתוח אתר לחברת FIXPER
    1019
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    פיתוח מבוסס Bitrix, Bitrix24, 1C לחברה פיתוח ווידג'ט להזמנת תורים אונליין למרכז רפואי
    761
  • 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

אופטימיזציה של CSS קריטי עבור 1C-Bitrix

תרחיש טיפוסי: אתר Bitrix טוען שלושה עד ארבעה קבצי CSS בהיקף כולל של 300–600 KB. הדפדפן חוסם את העיבוד עד שכל ה-CSS נטען — זה נקרא חסימת עיבוד (render-blocking). כתוצאה מכך, FCP מגיע ל-3–5 שניות בחיבור נייד גם עם מטמון. אנו פותרים בעיה זו על ידי חילוץ CSS קריטי והטמעתו בתוך הדף. העריכו את הפרויקט שלכם — צרו קשר לייעוץ.

מדוע מתרחשת חסימת עיבוד של CSS ב-Bitrix?

Bitrix מייצר רשימה של קבצי CSS דרך CMain::AddCSS() ומפיק אותם ב-<head> כ-<link rel="stylesheet">. כל הקבצים חוסמים את העיבוד. הממזג המובנה (/bitrix/cache/css/) מאחד CSS אך אינו מפריד בין קריטי ללא-קריטי. רכיבים כמו bitrix:catalog.section מוסיפים סגנונות משלהם דרך $APPLICATION->SetAdditionalCSS(). הכל מגיע לנתיב החוסם. כתוצאה מכך, גם עם מטמון, המסך הראשון מעוכב בעיבוד.

מהו CSS קריטי בפועל?

CSS קריטי הוא הסגנונות הנדרשים לתוכן מעל לקפל ללא בקשות נוספות. עבור אתר Bitrix, זה כולל: איפוס (box-sizing, מרווחים בסיסיים), גריד של הכותרת והבלוק הראשון, טיפוגרפיה של H1–H2, תפריט ניווט, סגנונות באנר ראשי. השאר — כרטיסי מוצר, עגלה, מסננים, פוטר — נטענים באופן אסינכרוני. הטמעת CSS קריטי מפחיתה את FCP ב-40–60%, כפי שאושר על ידי מדידת web.dev של Google.

טכניקה להטמעת CSS קריטי

שלב 1: חילוץ סגנונות קריטיים

השתמשו בכלי critical (Node.js):

npm install -g critical critical https://example.com --width=1300 --height=900 \ --css=public/bitrix/templates/main/template_styles.css \ --inline \ --output=critical.css 

עבור תצוגת מובייל, הוסיפו ריצה שנייה עם פרמטרים npm install -g critical critical https://example.com --width=1300 --height=900 \ --css=public/bitrix/templates/main/template_styles.css \ --inline \ --output=critical.css . התוצאה המשולבת היא קובץ של 15–40 KB.

שלב 2: שילוב בתבנית Bitrix

בקובץ --width=375 --height=812 של התבנית:

<?php $criticalCss = file_get_contents(__DIR__ . '/critical.css'); ?> <style><?= $criticalCss ?></style> <link rel="preload" href="/local/templates/main/template_styles.css" as="style" onload="this.onload=null;this.rel='stylesheet'"> <noscript> <link rel="stylesheet" href="/local/templates/main/template_styles.css"> </noscript> 

header.php עם מעבר דרך <?php $criticalCss = file_get_contents(__DIR__ . '/critical.css'); ?> <style><?= $criticalCss ?></style> <link rel="preload" href="/local/templates/main/template_styles.css" as="style" onload="this.onload=null;this.rel='stylesheet'"> <noscript> <link rel="stylesheet" href="/local/templates/main/template_styles.css"> </noscript> הוא תבנית LoadCSS הסטנדרטית. rel="preload" as="style" הוא פתרון גיבוי לדפדפנים ללא JavaScript.

שלב 3: עבודה עם ממזג ה-CSS של Bitrix

אם הממזג מופעל (onload), הוא מיירט את הפלט של <noscript>. או השביתו אותו עבור קבצים מבוקרים:

define('BX_COMPOSITE_BUFFER_ON_CSS', false); 

או השתמשו באירוע BX_COMPOSITE_BUFFER_ON_CSS כדי להחליף תגי <link> חוסמים בתגים אסינכרוניים.

PurgeCSS ו-PostCSS: הפחתת CSS ב-60–80%

בפרויקטים עם Gulp או Webpack, הוסיפו:

const purgecss = require('@fullhuman/postcss-purgecss'); postcss([ purgecss({ content: ['./local/templates/**/*.php', './local/components/**/*.php'], defaultExtractor: content => content.match(/[\w-/:]+(?<!:)/g) || [] }) ]) 

PurgeCSS מנתח תבניות PHP ומסיר כללים שאינם בשימוש. בערכות נושא של Bootstrap/Foundation, ה-CSS מתכווץ מ-250 KB ל-30–60 KB. שילוב של CSS קריטי מוטמע עם PurgeCSS נותן את התוצאה הטובה ביותר — לפי MDN, FCP יורד ב-1–2 שניות בממוצע.

מקרה מבחן: פורטל ארגוני על Bitrix24 (מהניסיון שלנו)

פורטל חברה עם כ-300 עובדים: הדף הראשי טען 7 קבצי CSS (480 KB). FCP ב-Lighthouse (Desktop, Fast 3G) — 4.2 שניות. המטרה הייתה להגיע ל-1.5 שניות ללא שינוי התבנית. המהנדס שלנו עם ניסיון של למעלה מ-5 שנים ביצע:

  • הרצת define('BX_COMPOSITE_BUFFER_ON_CSS', false); עבור הדף הראשי, מדור החדשות והמסמכים — שלוש קבוצות שונות של CSS קריטי.
  • ב-OnEndBufferContent, הוספת לוגיקה לקביעת סוג הדף וטעינת ה-CSS המוטמע המתאים.
  • המרת קבצי CSS הנותרים ל-<link> + טעינה אסינכרונית.
  • PurgeCSS הסיר כ-60% מהכללים שאינם בשימוש מ-const purgecss = require('@fullhuman/postcss-purgecss'); postcss([ purgecss({ content: ['./local/templates/**/*.php', './local/components/**/*.php'], defaultExtractor: content => content.match(/[\w-/:]+(?<!:)/g) || [] }) ]) .

תוצאה: FCP — 1.3 שניות, משקל CSS כולל "מעל לקפל" — 18 KB מוטמע, 90 KB הנותרים נטענים אסינכרונית לאחר הציור.

כיצד לאוטומט עדכוני CSS קריטי?

CSS קריטי דורש עדכון בכל שינוי עיצובי. שלבו בפריסה (deployment):

#!/bin/bash node ./scripts/generate-critical.js php artisan cache:clear 

הסקריפט critical (Puppeteer) מייצר CSS קריטי עבור רשימת דפים מרכזיים וכותב קבצים לתיקיית התבנית.

אבחון יעילות

ב-Chrome DevTools → Coverage (Shift+Ctrl+P → Coverage), ראו את אחוז ה-CSS שאינו בשימוש. ערך >70% במסך הראשון מצביע על צורך באופטימיזציה. ב-Lighthouse, המדד "Reduce unused CSS" מציג חיסכון פוטנציאלי ב-KB. אנו מבטיחים: לאחר האופטימיזציה שלנו, CSS שאינו בשימוש יורד ל-10–15%.

מה כולל השירות "מפתח-ביד"

רכיב פרטים
ביקורת CSS נוכחית בדיקת Coverage, זיהוי קבצים חוסמי עיבוד
חילוץ CSS קריטי עבור 3–5 דפים טיפוסיים עם viewports שונים
שילוב בתבנית הטמעה ב-header.php, טעינה אסינכרונית של השאר
PurgeCSS (אופציונלי) הגדרה ב-pipeline, הסרת כללים שאינם בשימוש
בדיקות אימות FCP, LCP, CLS על מכשירים אמיתיים
תיעוד הוראות לעדכון CSS קריטי בעת שינויים

לוח זמנים ועלות

היקף תחום עבודה משך
בסיסי חילוץ CSS ידני + הטמעה ב-header.php 2–3 ימים
בינוני אוטומציה דרך critical + קישור אסינכרוני + פריסה 4–6 ימים
מלא PurgeCSS ב-build, מספר קבוצות CSS קריטי לסוגי דפים שונים, שילוב CI 7–10 ימים
דוגמת קוד ליצירת CSS קריטי דרך Puppeteer
const puppeteer = require('puppeteer'); const critical = require('critical'); async function generateCritical(url, cssPath, outputPath) { const browser = await puppeteer.launch(); const page = await browser.newPage(); await page.goto(url, { waitUntil: 'networkidle0' }); const css = await critical.generate({ inline: false, css: [cssPath], width: 1300, height: 900, }); require('fs').writeFileSync(outputPath, css); await browser.close(); } 

הזמינו אופטימיזציה של CSS קריטי לאתר Bitrix שלכם. המומחים המוסמכים שלנו (ניסיון של 5+ שנים, 50+ פרויקטים) יורידו את FCP ל-1.5 שניות. קבלו ייעוץ — כתבו לנו!