שינוי גודל תמונות ב-1C-Bitrix: הגדרה, אופטימיזציה ומהירות

תארו לעצמכם: קטלוג חנות מקוונת ב-1C-Bitrix עם 10,000 מוצרים. לכל מוצר יש תמונה בגודל 4000×3000 פיקסלים במשקל 8 MB. ללא שינוי גודל, קבצים אלה מוגשים במלואם בכל בקשה. הדפדפן משנה את גודלם באמצעות CSS, ואתם משלמים על ג'יגה-בייט נוספים של תעבורה ומאבדים מבקרים בגלל אתר איטי.
השירותים שאנו מציעים
מציג 1 מתוך 1כל 1626 השירותים
שינוי גודל תמונות ב-1C-Bitrix: הגדרה, אופטימיזציה ומהירות
פשוט
~1 יום

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

שאלות נפוצות

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

  • 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

תארו לעצמכם: קטלוג חנות מקוונת על 1С-Bitrix עם 10,000 מוצרים. לכל מוצר יש תמונה בגודל 4000×3000 פיקסלים במשקל 8 MB. ללא שינוי גודל, קבצים אלה מוגשים במלואם בכל בקשה. הדפדפן משנה את גודלם באמצעות CSS, ואתם משלמים על ג'יגה-בייט נוספים של תעבורה ומאבדים מבקרים עקב טעינה איטית. Core Web Vitals נפגעים. משנה הגודל המובנה של Bitrix רחוק מלהיות אופטימלי — איכות 85, GD, ללא יצירה מוקדמת. אנו פותרים בעיה זו באופן מקיף: בוחרים את הספרייה, מגדירים פרמטרים, מגדירים מטמון ויצירה מוקדמת. כתוצאה מכך, אתם חוסכים בין $150–400 בחודש על תעבורה עבור קטלוג של 10,000 פריטים.

למה משנה הגודל המובנה לא עובד

מנגנון שינוי הגודל המובנה של Bitrix משתמש בשני ממשקי API: CFile::ResizeImageFile() הישן מהמודול הראשי (באמצעות GD) וה-\Bitrix\Main\Web\Image החדש (GD או Imagick). שניהם מאחסנים את התוצאה ב-bitrix/cache/resize_cache/. עם זאת, פרמטרי רכיב (למשל, DETAIL_IMAGE_WIDTH ב-bitrix:catalog.element) מוגדרים לעתים קרובות ל-0 — לא מתבצע שינוי גודל, והמקור מוגש. גם אם הפרמטרים מוגדרים, GD עם איכות 85 מופעל כברירת מחדל, וזה איטי ולא אופטימלי לקטלוגים גדולים.

איך לבחור בין GD ל-Imagick

פרמטר GD Imagick
מהירות על קבצים גדולים איטי מהיר (CPU/SSE)
איכות בעת הקטנה בינונית גבוהה (מסנני Lanczos)
תמיכה בפורמטים JPEG, PNG, GIF + WebP, TIFF, PSD, RAW
צריכת זיכרון ~128 MB ל-30 MP ~256 MB ל-30 MP
התקנה מובנה ב-PHP דורש php-imagick

Imagick מהיר יותר ואיכותי יותר. ניתן להחליף בשורה אחת או דרך לוח הניהול:

\Bitrix\Main\Config\Option::set('main', 'image_handler', 'imagick'); 

בדקו התקנה: \Bitrix\Main\Config\Option::set('main', 'image_handler', 'imagick'); . ב-Bitrix VM Imagick קיים, ב-PHP-FPM רגיל — php -r "echo extension_loaded('imagick') ? 'Imagick OK' : 'No Imagick';" או apt install php-imagick. מידע נוסף על יתרונות Imagick ניתן למצוא בויקיפדיה.

הגדרת איכות ואלגוריתם

\Bitrix\Main\Config\Option::set('main', 'image_resize_quality', '82'); \Bitrix\Main\Config\Option::set('main', 'image_resize_png_quality', '7'); 

82 עבור JPEG הוא פשרה בין גודל לאיכות. עבור PNG, 7 מתוך 9.

מצבי שינוי גודל ויישומם

קבוע התנהגות יישום
yum install php-imagick מידות מדויקות עם חיתוך אייקונים, תמונות פרופיל
\Bitrix\Main\Config\Option::set('main', 'image_resize_quality', '82'); \Bitrix\Main\Config\Option::set('main', 'image_resize_png_quality', '7'); פרופורציונלי, מתאים בפנים כרטיסי מוצר
BX_RESIZE_IMAGE_EXACT פרופורציונלי ללא גבולות סליידרים, באנרים

בתבנית רכיב:

$arFile = CFile::ResizeImageGet( $arResult['DETAIL_PICTURE'], ['width' => 800, 'height' => 600], BX_RESIZE_IMAGE_PROPORTIONAL, false ); 

מתי צריך יצירה מוקדמת של תצוגות מקדימות?

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

AddEventHandler('main', 'OnAfterFileAdd', function($arFields) { if (in_array($arFields['CONTENT_TYPE'], ['image/jpeg', 'image/png'])) { CFile::ResizeImageGet($arFields['ID'], ['width' => 1200, 'height' => 900], BX_RESIZE_IMAGE_PROPORTIONAL); CFile::ResizeImageGet($arFields['ID'], ['width' => 400, 'height' => 300], BX_RESIZE_IMAGE_PROPORTIONAL); } }); 

מגבלות וניקוי מטמון

שינוי גודל של תמונות מעל 30 MP דורש BX_RESIZE_IMAGE_PROPORTIONAL_ALT, $arFile = CFile::ResizeImageGet( $arResult['DETAIL_PICTURE'], ['width' => 800, 'height' => 600], BX_RESIZE_IMAGE_PROPORTIONAL, false ); . עבור Imagick, הוסיפו גם OnAfterFileAdd.

מטמון התצוגות המקדימות לא מתנקה אוטומטית בעת החלפת קובץ. ניקוי בטוח לפי תאריך:

// удаление кеша старше 30 дней BXClearCache(true, '/'); 

חלופה היא סקריפט המשתמש ב-AddEventHandler('main', 'OnAfterFileAdd', function($arFields) { if (in_array($arFields['CONTENT_TYPE'], ['image/jpeg', 'image/png'])) { CFile::ResizeImageGet($arFields['ID'], ['width' => 1200, 'height' => 900], BX_RESIZE_IMAGE_PROPORTIONAL); CFile::ResizeImageGet($arFields['ID'], ['width' => 400, 'height' => 300], BX_RESIZE_IMAGE_PROPORTIONAL); } }); , אך אנו מעדיפים את הגישה התכנותית.

איך אנו מגדירים שינוי גודל: תהליך ומקרה בוחן

הפרויקט האופייני שלנו — חנות מקוונת עם 50,000 מוצרים. מצב התחלתי: GD, איכות 85, ללא יצירה מוקדמת, זמן טעינת דף קטלוג 8 שניות. עשינו:

  1. ביקורת הגדרות נוכחיות — memory_limit = 256M, דרייבר, פרמטרי רכיב.
  2. הפעלנו Imagick, הגדרנו איכות ל-82.
  3. כתבנו מטפל יצירה מוקדמת לקבצים חדשים.
  4. עדכנו תבניות רכיב — הגדרנו גדלים ומצבים נכונים.
  5. הגדרנו סוכן לניקוי מטמון מיושן פעם בשבוע.
  6. בדקנו — זמן הטעינה ירד ל-2.5 שניות, התעבורה ירדה ב-65%.

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

  • ביקורת של תצורת Bitrix והשרת הנוכחית.
  • בחירה והפעלה של הדרייבר האופטימלי (GD/Imagick).
  • הגדרת איכות ומצבי שינוי גודל לכל הרכיבים.
  • פיתוח והטמעה של יצירה מוקדמת של תצוגות מקדימות.
  • אופטימיזציה של פרמטרי PHP (memory_limit, max_execution_time).
  • הגדרת ניקוי מטמון אוטומטי.
  • תיעוד כל השינויים שבוצעו.
  • אחריות ל-12 חודשים על ההגדרות.

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

לוח זמנים משוער — בין 2 ל-5 ימי עבודה בהתאם לגודל הקטלוג ומורכבות התבנית. התמחור מחושב באופן אישי לאחר ביקורת. קבלו ייעוץ — כתבו לנו, נעריך את הפרויקט שלכם.

טעויות נפוצות בהגדרה עצמית
  • הגדרת max_execution_time = 60 מתחת ל-128 MB — שינוי הגודל נכשל עם מסך לבן.
  • התעלמות מפרמטרי רכיב — שינוי הגודל לא עובד, המקור מוגש.
  • שימוש ב-GD כאשר Imagick זמין — עומס מיותר.
  • חוסר יצירה מוקדמת — טעינה איטית למבקרים ראשונים.
  • מטמון לא מנוקה לאחר החלפת תמונה — משתמשים רואים תמונות ישנות.

הניסיון שלנו של למעלה מ-10 שנים ויותר מ-500 פרויקטים על Bitrix מבטיח שאחרי הגדרת שינוי הגודל, החנות שלכם תפעל מהר יותר ו-Core Web Vitals יהיו באזור הירוק. הזמינו ביקורת וכיוונון כבר עכשיו. המלצות לאופטימיזציה של תמונות מתוארות גם בתיעוד Google PageSpeed Insights.