БистСма 1Π‘-Битрикс β€” это Π½Π΅ просто CMS, Π° полноцСнная ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° для создания ΠΈ управлСния Π²Π΅Π±-ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°ΠΌΠΈ любого ΠΌΠ°ΡΡˆΡ‚Π°Π±Π°. Она сочСтаСт Π² сСбС Π³ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ°, удобство конструктора ΠΈ ΠΌΠΎΡ‰Π½Ρ‹Π΅ инструмСнты для бизнСс-Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ. Но ΠΊΠ°ΠΊ ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ эта систСма ΠΏΠΎΠ΄ ΠΊΠ°ΠΏΠΎΡ‚ΠΎΠΌ? ΠŸΠΎΡ‡Π΅ΠΌΡƒ ΠΎΠ΄Π½ΠΈ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ Π΅Ρ‘ «тяТёлой», Π° Π΄Ρ€ΡƒΠ³ΠΈΠ΅ β€” Π½Π΅Π·Π°ΠΌΠ΅Π½ΠΈΠΌΠΎΠΉ для ΠΊΠΎΡ€ΠΏΠΎΡ€Π°Ρ‚ΠΈΠ²Π½Ρ‹Ρ… Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ?

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ Ρ€Π°Π·Π±Π΅Ρ€Ρ‘ΠΌ 1Π‘-Битрикс Π½Π° составныС части: ΠΎΡ‚ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ ядра ΠΈ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΎΠ² ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ запросов Π΄ΠΎ взаимодСйствия с Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ с 1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅. Π’Ρ‹ ΡƒΠ·Π½Π°Π΅Ρ‚Π΅, ΠΊΠ°ΠΊ устроСны ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ, ΠΊΠ°ΠΊΠΈΠ΅ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‚ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ, ΠΈ ΠΏΠΎΡ‡Π΅ΠΌΡƒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ дольшС, Ρ‡Π΅ΠΌ Π² Β«Π»Ρ‘Π³ΠΊΠΈΡ…Β» CMS. ΠœΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π» Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ»Π΅Π·Π΅Π½ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ, администраторам ΠΈ Ρ‚Π΅ΠΌ, ΠΊΡ‚ΠΎ Π²Ρ‹Π±ΠΈΡ€Π°Π΅Ρ‚ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡƒ для Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.

ОсобоС Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΡƒΠ΄Π΅Π»ΠΈΠΌ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠΌΡƒ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡƒ ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ Битрикс, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ускоряСт Ρ€Π°Π±ΠΎΡ‚Ρƒ сайта ΠΈ создаёт слоТности ΠΏΡ€ΠΈ ΠΎΡ‚Π»Π°Π΄ΠΊΠ΅. Π’Π°ΠΊΠΆΠ΅ Ρ€Π°Π·Π±Π΅Ρ€Ρ‘ΠΌ, ΠΏΠΎΡ‡Π΅ΠΌΡƒ интСграция с 1Π‘ часто становится Β«ΡƒΠ·ΠΊΠΈΠΌ мСстом» ΠΈ ΠΊΠ°ΠΊ этого ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ.

АрхитСктура 1Π‘-Битрикс: ΠΈΠ· Ρ‡Π΅Π³ΠΎ состоит систСма

Π’ основС 1Π‘-Битрикс Π»Π΅ΠΆΠΈΡ‚ ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½Π°Ρ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°, Π³Π΄Π΅ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ. Π―Π΄Ρ€ΠΎ систСмы написано Π½Π° PHP ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ MySQL (ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π‘Π£Π‘Π”) для хранСния Π΄Π°Π½Π½Ρ‹Ρ…. Рассмотрим ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ слои:

  • πŸ”Ή Π―Π΄Ρ€ΠΎ (Kernel) β€” Π±Π°Π·ΠΎΠ²Ρ‹Π΅ классы ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΎΡ‚Π²Π΅Ρ‡Π°ΡŽΡ‰ΠΈΠ΅ Π·Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ запросов, ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΈ взаимодСйствиС с модулями. Π’ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя Π°Π²Ρ‚ΠΎΠ·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊ классов, систСму событий ΠΈ API для Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΉ.
  • πŸ“¦ ΠœΠΎΠ΄ΡƒΠ»ΠΈ β€” нСзависимыС Π±Π»ΠΎΠΊΠΈ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, main, iblock, sale), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ/ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ΠΈΠΌΠ΅Π΅Ρ‚ свою структуру Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈ Ρ‚Π°Π±Π»ΠΈΡ† Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ….
  • πŸ–₯️ Π¨Π°Π±Π»ΠΎΠ½Ρ‹ (Templates) β€” систСма раздСляСт бизнСс-Π»ΠΎΠ³ΠΈΠΊΡƒ ΠΈ прСдставлСниС, поддСрТивая нСсколько шаблонов для ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, .default, .custom).
  • πŸ—ƒοΈ Π‘Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ… β€” Ρ…Ρ€Π°Π½ΠΈΡ‚ ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚, настройки ΠΈ кэш. Битрикс Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ собствСнныС Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ с прСфиксом b_ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, b_iblock_element для ΠΈΠ½Ρ„ΠΎΠ±Π»ΠΎΠΊΠΎΠ²).

Один ΠΈΠ· ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΎΠ² β€” событийная модСль. БистСма позволяСт ΠΏΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΈ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π½Π° любом этапС: ΠΎΡ‚ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ модуля Π΄ΠΎ Π²Ρ‹Π²ΠΎΠ΄Π° ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚Π°. НапримСр, событиС OnBeforeIBlockElementAdd срабатываСт ΠΏΠ΅Ρ€Π΅Π΄ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ элСмСнта ΠΈΠ½Ρ„ΠΎΠ±Π»ΠΎΠΊΠ°, Ρ‡Ρ‚ΠΎ Π΄Π°Ρ‘Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π²Π°Π»ΠΈΠ΄ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ»ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΈΡ… Β«Π½Π° Π»Π΅Ρ‚ΡƒΒ».

πŸ“Š Какой ΠΌΠΎΠ΄ΡƒΠ»ΡŒ 1Π‘-Битрикс Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Ρ‡Π°Ρ‰Π΅ всСго?
Π˜Π½Ρ„ΠΎΠ±Π»ΠΎΠΊΠΈ (iblock)
Π’ΠΎΡ€Π³ΠΎΠ²Ρ‹ΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ (catalog)
Π“Π»Π°Π²Π½Ρ‹ΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ (main)
ΠŸΠΎΡ‡Ρ‚Π° (mail)
Π”Ρ€ΡƒΠ³ΠΎΠΉ

Π’Π°ΠΆΠ½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ 1Π‘-Битрикс β€” это Π½Π΅ ΠΌΠΎΠ½ΠΎΠ»ΠΈΡ‚, Π° Π½Π°Π±ΠΎΡ€ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ². НапримСр, ΠΌΠΎΠ΄ΡƒΠ»ΡŒ sale (ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚-ΠΌΠ°Π³Π°Π·ΠΈΠ½) зависит ΠΎΡ‚ catalog (ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ²) ΠΈ iblock (ΠΈΠ½Ρ„ΠΎΠ±Π»ΠΎΠΊΠΈ), Π½ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΈ с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ источниками Π΄Π°Π½Π½Ρ‹Ρ…. Π­Ρ‚Π° ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½ΠΎΡΡ‚ΡŒ позволяСт Π³ΠΈΠ±ΠΊΠΎ Π½Π°ΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒ систСму, Π½ΠΎ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ понимания связСй ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌΠΈ.

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: ВСрсии Битрикс Π½ΠΈΠΆΠ΅ 20.0.0 ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΠΉ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡ‚Π½Ρ‹ΠΌ кэшСм (bitrix:catalog.composite). Π’ Π½ΠΎΠ²Ρ‹Ρ… вСрсиях рСкомСндуСтся ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ Π½Π° bitrix:catalog.section с Π²ΠΊΠ»ΡŽΡ‡Ρ‘Π½Π½Ρ‹ΠΌ HTML-ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ.

ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° HTTP-запросов: ΠΎΡ‚ URL Π΄ΠΎ ΠΎΡ‚Π²Π΅Ρ‚Π°

Когда ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚ страницу Π½Π° сайтС ΠΏΠΎΠ΄ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ 1Π‘-Битрикс, систСма ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ нСсколько этапов ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ запроса. Рассмотрим Ρ‚ΠΈΠΏΠΈΡ‡Π½Ρ‹ΠΉ сцСнарий:

  1. ΠœΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·Π°Ρ†ΠΈΡ. БистСма Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ URL ΠΈ опрСдСляСт, ΠΊΠ°ΠΊΠΎΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ ΠΈΠ»ΠΈ страница Π΄ΠΎΠ»ΠΆΠ½Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ запрос. НапримСр, ΠΏΡƒΡ‚ΡŒ /catalog/ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ привязан ΠΊ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρƒ bitrix:catalog.
  2. Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ ядра. ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ΡΡ основныС классы, Π·Π°Π³Ρ€ΡƒΠΆΠ°ΡŽΡ‚ΡΡ настройки ΠΈΠ· Ρ„Π°ΠΉΠ»Π° bitrix/.settings.php ΠΈ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ….
  3. Π’Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ бизнСс-Π»ΠΎΠ³ΠΈΠΊΠΈ. Π—Π°ΠΏΡƒΡΠΊΠ°ΡŽΡ‚ΡΡ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ событий, Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ SQL-запросы ΠΊ Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ… (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π²Ρ‹Π±ΠΎΡ€ΠΊΠ° Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² ΠΈΠ· ΠΈΠ½Ρ„ΠΎΠ±Π»ΠΎΠΊΠ°).
  4. Π€ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΡ‚Π²Π΅Ρ‚Π°. Π”Π°Π½Π½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ΡΡ Π² шаблон, Π³Π΄Π΅ ΡΠΌΠ΅ΡˆΠΈΠ²Π°ΡŽΡ‚ΡΡ с HTML-Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΠΎΠΉ. На этом этапС ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅.
  5. ΠžΡ‚ΠΏΡ€Π°Π²ΠΊΠ° ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρƒ. Бформированная страница отправляСтся Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Ρƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ.

ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒ Битрикс β€” буфСризация Π²Ρ‹Π²ΠΎΠ΄Π°. БистСма Π½Π΅ отправляСт Π΄Π°Π½Π½Ρ‹Π΅ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρƒ сразу, Π° Π½Π°ΠΊΠ°ΠΏΠ»ΠΈΠ²Π°Π΅Ρ‚ ΠΈΡ… Π² Π±ΡƒΡ„Π΅Ρ€Π΅, Ρ‡Ρ‚ΠΎ позволяСт ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΡ‚Π²Π΅Ρ‚ Β«Π½Π° Π»Π΅Ρ‚ΡƒΒ» (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ аналитичСскиС Ρ‚Π΅Π³ΠΈ ΠΈΠ»ΠΈ ΡΠΆΠΈΠΌΠ°Ρ‚ΡŒ HTML). Π­Ρ‚ΠΎ ΡƒΠ΄ΠΎΠ±Π½ΠΎ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ², Π½ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ ΠΏΡ€ΠΈ ΠΎΡ‚Π»Π°Π΄ΠΊΠ΅, Ссли Π½Π΅ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ Π±ΡƒΡ„Π΅Ρ€ΠΈΠ·Π°Ρ†ΠΈΠΈ.

Π­Ρ‚Π°ΠΏ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠšΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹/классы ВрСмя выполнСния (ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ)
ΠœΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·Π°Ρ†ΠΈΡ /bitrix/urlrewrite.php, CMain 1–5 мс
Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ ядра CXCore, .settings.php 10–50 мс
SQL-запросы CDatabase, CIBlockElement 20–200 мс (зависит ΠΎΡ‚ слоТности)
Шаблонизация .php-ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹, CBitrixComponentTemplate 5–30 мс

Одной ΠΈΠ· Β«Π±ΠΎΠ»Π΅Π·Π½Π΅ΠΉΒ» Битрикс являСтся ΠΈΠ·Π±Ρ‹Ρ‚ΠΎΡ‡Π½Ρ‹Π΅ SQL-запросы. НапримСр, ΠΏΡ€ΠΈ Π²Ρ‹Π²ΠΎΠ΄Π΅ списка Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² систСма ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ дСсятки запросов ΠΊ Π±Π°Π·Π΅ вмСсто ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ. Π­Ρ‚ΠΎ связано с Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π½Ρ‹ΠΌΠΈ особСнностями ΠΈΠ½Ρ„ΠΎΠ±Π»ΠΎΠΊΠΎΠ² ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ². Π Π΅ΡˆΠ°Π΅Ρ‚ΡΡ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΈΠ»ΠΈ Ρ€ΡƒΡ‡Π½ΠΎΠΉ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ запросов Ρ‡Π΅Ρ€Π΅Π· CIBlockElement::GetList с ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ.

define("DEBUG_DB", true);

Π­Ρ‚ΠΎ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹ΡΠ²ΠΈΡ‚ΡŒ Β«ΡƒΠ·ΠΊΠΈΠ΅ мСста» ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ.-->

Π Π°Π±ΠΎΡ‚Π° с Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½Ρ‹Ρ…: ΠΊΠ°ΠΊ Битрикс Ρ…Ρ€Π°Π½ΠΈΡ‚ ΠΈ ΠΈΠ·Π²Π»Π΅ΠΊΠ°Π΅Ρ‚ Π΄Π°Π½Π½Ρ‹Π΅

1Π‘-Битрикс ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Ρ€Π΅Π»ΡΡ†ΠΈΠΎΠ½Π½ΡƒΡŽ Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ… (ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ MySQL ΠΈΠ»ΠΈ MariaDB) для хранСния всСй ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ: ΠΎΡ‚ настроСк сайта Π΄ΠΎ ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚Π° ΠΈ Π·Π°ΠΊΠ°Π·ΠΎΠ². ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒ систСмы β€” собствСнная абстракция Π½Π°Π΄ SQL, которая ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρƒ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ², Π½ΠΎ ΠΈΠ½ΠΎΠ³Π΄Π° услоТняСт ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡŽ.

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π‘Π”:

  • πŸ“Š Π’Π°Π±Π»ΠΈΡ†Ρ‹ с прСфиксом b_. ВсС Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Битрикс ΠΈΠΌΠ΅ΡŽΡ‚ прСфикс (ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ b_), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π² настройках. НапримСр, b_iblock_element Ρ…Ρ€Π°Π½ΠΈΡ‚ элСмСнты ΠΈΠ½Ρ„ΠΎΠ±Π»ΠΎΠΊΠΎΠ².
  • πŸ”„ ORM-ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄. ВмСсто прямых SQL-запросов рСкомСндуСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ классы Π²Ρ€ΠΎΠ΄Π΅ CIBlockElement ΠΈΠ»ΠΈ CSaleOrder, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΡŽΡ‚ запросы автоматичСски.
  • πŸ” Π˜Π½Π΄Π΅ΠΊΡΡ‹. Битрикс создаёт индСксы для основных ΠΏΠΎΠ»Π΅ΠΉ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ID, IBLOCK_ID), Π½ΠΎ для слоТных ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒΡΡ ручная настройка.
  • πŸ—‘οΈ ΠœΡƒΡΠΎΡ€Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅. ΠŸΡ€ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠΈ элСмСнтов (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ²) ΠΎΠ½ΠΈ Π½Π΅ ΡƒΠ΄Π°Π»ΡΡŽΡ‚ΡΡ физичСски, Π° ΠΏΠΎΠΌΠ΅Ρ‡Π°ΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ ΡƒΠ΄Π°Π»Ρ‘Π½Π½Ρ‹Π΅ (ΠΏΠΎΠ»Π΅ ACTIVE = 'N'). Π­Ρ‚ΠΎ позволяСт Π²ΠΎΡΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅, Π½ΠΎ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ пСриодичСской чистки.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Ρ‚ΠΈΠΏΠΈΡ‡Π½ΠΎΠ³ΠΎ запроса для Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ элСмСнтов ΠΈΠ½Ρ„ΠΎΠ±Π»ΠΎΠΊΠ°:

$arFilter = [

"IBLOCK_ID" => 10, // ID ΠΈΠ½Ρ„ΠΎΠ±Π»ΠΎΠΊΠ°

"ACTIVE" => "Y", // Волько Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Π΅ элСмСнты

"SECTION_ID" => 42 // РаздСл с ID 42

];

$arSelect = ["ID", "NAME", "DETAIL_PAGE_URL"]; // Π’Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌΡ‹Π΅ поля

$res = CIBlockElement::GetList(

["SORT" => "ASC"], // Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ°

$arFilter, // Π€ΠΈΠ»ΡŒΡ‚Ρ€

false, // Π“Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²ΠΊΠ°

false, // Навигация

$arSelect // Π’Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌΡ‹Π΅ поля

);

while ($ob = $res->GetNextElement()) {

$arFields = $ob->GetFields();

print_r($arFields);

}

Одной ΠΈΠ· распространённых ошибок являСтся избыточная Π²Ρ‹Π±ΠΎΡ€ΠΊΠ° Π΄Π°Π½Π½Ρ‹Ρ…. НапримСр, Ссли Π²Π°ΠΌ Π½ΡƒΠΆΠ½Ρ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ID ΠΈ NAME элСмСнтов, Π½ΠΎ Π²Ρ‹ Π½Π΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚Π΅ это Π² $arSelect, Битрикс Π²Ρ‹Π±Π΅Ρ€Π΅Ρ‚ всС поля, Ρ‡Ρ‚ΠΎ Π·Π°ΠΌΠ΅Π΄Π»ΠΈΡ‚ запрос. Π’Π°ΠΊΠΆΠ΅ стоит ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π²Ρ€ΠΎΠ΄Π΅ GetList Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ CDBResult, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½ΡƒΠΆΠ½ΠΎ ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ Π² Ρ†ΠΈΠΊΠ»Π΅.

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с большими ΠΈΠ½Ρ„ΠΎΠ±Π»ΠΎΠΊΠ°ΠΌΠΈ (10 000+ элСмСнтов) стандартныС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ CIBlockElement ΠΌΠΎΠ³ΡƒΡ‚ Ρ‚ΠΎΡ€ΠΌΠΎΠ·ΠΈΡ‚ΡŒ. Π’ Ρ‚Π°ΠΊΠΈΡ… случаях Π»ΡƒΡ‡ΡˆΠ΅ ΠΏΠΈΡΠ°Ρ‚ΡŒ прямыС SQL-запросы с ΡƒΡ‡Ρ‘Ρ‚ΠΎΠΌ индСксов ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ CBitrixComponent::includeComponent с ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ.

ΠœΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹ ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ: ΠΏΠΎΡ‡Π΅ΠΌΡƒ Битрикс Ρ‚ΠΎ быстрый, Ρ‚ΠΎ ΠΌΠ΅Π΄Π»Π΅Π½Π½Ρ‹ΠΉ

БистСма ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ Π² 1Π‘-Битрикс β€” это ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Π°Ρ всСлСнная с собствСнными ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌΠΈ ΠΈ ΠΏΠΎΠ΄Π²ΠΎΠ΄Π½Ρ‹ΠΌΠΈ камнями. Π‘ ΠΎΠ΄Π½ΠΎΠΉ стороны, кэш ускоряСт Ρ€Π°Π±ΠΎΡ‚Ρƒ сайта Π² дСсятки Ρ€Π°Π·. Π‘ Π΄Ρ€ΡƒΠ³ΠΎΠΉ β€” Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Π°Ρ настройка ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ видят ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ»ΠΈ страница Π½Π΅ обновляСтся послС ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ.

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ кэша Π² Битрикс:

  • πŸ—„οΈ Кэш ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ². Π₯Ρ€Π°Π½ΠΈΡ‚ HTML-Π²Ρ‹Π²ΠΎΠ΄ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, bitrix:news.list). НастраиваСтся Π² ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°Ρ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° ("CACHE_TYPE" => "A", "CACHE_TIME" => 3600).
  • πŸ“₯ УправляСмый кэш (CPHPCache). Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для хранСния ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² слоТных вычислСний). ΠŸΡ€ΠΈΠΌΠ΅Ρ€:
    $cache = new CPHPCache();
    

    $cacheId = "my_unique_key";

    $cachePath = "/my_cache/";

    if ($cache->InitCache(3600, $cacheId, $cachePath)) {

    $arData = $cache->GetVars();

    } else {

    $arData = ["data" => "expensive_operation"];

    $cache->StartDataCache();

    $cache->EndDataCache($arData);

    }

  • πŸ”„ Кэш настроСк. Π₯Ρ€Π°Π½ΠΈΡ‚ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, настройки Π³Π»Π°Π²Π½ΠΎΠ³ΠΎ модуля). ΠžΡ‡ΠΈΡ‰Π°Π΅Ρ‚ΡΡ автоматичСски ΠΏΡ€ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ настроСк.
  • 🌐 ΠšΠΎΠΌΠΏΠΎΠ·ΠΈΡ‚Π½Ρ‹ΠΉ кэш. ΠŸΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ‚ ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ†Π΅Π»ΡƒΡŽ страницу со всСми ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌΠΈ. Π’ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² настройках сайта (Настройки β†’ Настройки ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π° β†’ Π“Π»Π°Π²Π½Ρ‹ΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ β†’ ΠšΠΎΠΌΠΏΠΎΠ·ΠΈΡ‚Π½Ρ‹ΠΉ сайт).

Бамая распространённая ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° β€” Β«Π½Π΅Π²ΠΈΠ΄ΠΈΠΌΡ‹Π΅Β» обновлСния. НапримСр, Π²Ρ‹ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»ΠΈ элСмСнт ΠΈΠ½Ρ„ΠΎΠ±Π»ΠΎΠΊΠ°, Π½ΠΎ Π½Π° сайтС отобраТаСтся старая вСрсия, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ:

  1. Кэш ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° Π½Π΅ сбросился (Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅: ΠΎΡ‡ΠΈΡΡ‚ΠΈΡ‚ΡŒ кэш Π² Π°Π΄ΠΌΠΈΠ½ΠΊΠ΅ ΠΈΠ»ΠΈ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹ ΠΈΠ· /bitrix/cache/).
  2. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡ‚Π½Ρ‹ΠΉ кэш, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ явного сброса (Настройки β†’ Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ β†’ ΠšΠΎΠΌΠΏΠΎΠ·ΠΈΡ‚Π½Ρ‹ΠΉ сайт β†’ Π‘Π±Ρ€ΠΎΡΠΈΡ‚ΡŒ кэш).
  3. Π’ шаблонС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° Π½Π΅ ΡƒΡ‡Ρ‚Ρ‘Π½ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ "CACHE_GROUPS" (Ссли ΠΏΡ€Π°Π²Π° доступа Π²Π»ΠΈΡΡŽΡ‚ Π½Π° Π²Ρ‹Π²ΠΎΠ΄).
Как ΠΏΡ€ΠΈΠ½ΡƒΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡΠ±Ρ€ΠΎΡΠΈΡ‚ΡŒ кэш Ρ‡Π΅Ρ€Π΅Π· ΠΊΠΎΠ΄?

Для очистки кэша ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° ΠΏΠΎ Π΅Π³ΠΎ ID ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅:

CBitrixComponent::clearComponentCache("bitrix:news.list", "/path/to/page/");

Для ΠΏΠΎΠ»Π½ΠΎΠΉ очистки управляСмого кэша:

BXClearCache(true, "/my_cache/");

Π•Ρ‰Ρ‘ ΠΎΠ΄ΠΈΠ½ нюанс β€” ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΠΏΡ€Π°Π²Π° доступа. Если Π½Π° сайтС Π΅ΡΡ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ Π³Ρ€ΡƒΠΏΠΏΡ‹ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΎΠΏΡ‚ΠΎΠ²ΠΈΠΊΠΈ ΠΈ Ρ€ΠΎΠ·Π½ΠΈΡ‡Π½Ρ‹Π΅ ΠΏΠΎΠΊΡƒΠΏΠ°Ρ‚Π΅Π»ΠΈ), кэш Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ эти Π³Ρ€ΡƒΠΏΠΏΡ‹, ΠΈΠ½Π°Ρ‡Π΅ Ρ€Π°Π·Π½Ρ‹Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ увидят ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΉ ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚. Для этого Π² ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°Ρ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚:

"CACHE_GROUPS" => ["Y", "N"] // Π£Ρ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ Π³Ρ€ΡƒΠΏΠΏΡ‹ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ
πŸ’‘

ΠšΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π² Битрикс β€” ΠΌΠΎΡ‰Π½Ρ‹ΠΉ инструмСнт, Π½ΠΎ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π²Π½ΠΈΠΌΠ°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΉ настройки. ВсСгда провСряйтС, ΠΊΠ°ΠΊΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΊΡΡˆΠΈΡ€ΡƒΡŽΡ‚ΡΡ ΠΈ ΠΏΡ€ΠΈ ΠΊΠ°ΠΊΠΈΡ… условиях кэш Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠ±Ρ€Π°ΡΡ‹Π²Π°Ρ‚ΡŒΡΡ.

Π˜Π½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡ с 1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅ β€” ΠΊΠ°ΠΊ это Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅

Одной ΠΈΠ· ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… Ρ„ΠΈΡˆΠ΅ΠΊ 1Π‘-Битрикс являСтся Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ с 1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅ для ΠΎΠ±ΠΌΠ΅Π½Π° Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΎ Ρ‚ΠΎΠ²Π°Ρ€Π°Ρ…, Π·Π°ΠΊΠ°Π·Π°Ρ…, ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°Ρ… ΠΈ Ρ‚. Π΄. Однако этот процСсс часто Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ слоТности Ρƒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ². Π Π°Π·Π±Π΅Ρ€Ρ‘ΠΌ, ΠΊΠ°ΠΊ устроСн ΠΎΠ±ΠΌΠ΅Π½ ΠΈ Π³Π΄Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹.

БущСствуСт Π΄Π²Π° основных способа ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ:

  1. Π§Π΅Ρ€Π΅Π· ΠΌΠΎΠ΄ΡƒΠ»ΡŒ 1C:Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ сайтом (CommerceML).
    Π­Ρ‚ΠΎ стандартный ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ CommerceML 2.0 для ΠΎΠ±ΠΌΠ΅Π½Π° Π΄Π°Π½Π½Ρ‹ΠΌΠΈ. ΠŸΡ€ΠΎΡ†Π΅ΡΡ выглядит Ρ‚Π°ΠΊ:
    1. 1Π‘ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΠ΅Ρ‚ XML-Ρ„Π°ΠΉΠ» с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, import.xml для Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² ΠΈΠ»ΠΈ orders.xml для Π·Π°ΠΊΠ°Π·ΠΎΠ²).
    2. Π€Π°ΠΉΠ» загруТаСтся Π½Π° сСрвСр ΠΏΠΎ FTP ΠΈΠ»ΠΈ HTTP.
    3. Битрикс ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ Ρ„Π°ΠΉΠ» Ρ‡Π΅Ρ€Π΅Π· ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ /bitrix/admin/1c_exchange.php.
    4. Π”Π°Π½Π½Ρ‹Π΅ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π² ΠΈΠ½Ρ„ΠΎΠ±Π»ΠΎΠΊΠΈ ΠΈΠ»ΠΈ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Ρ‚ΠΎΡ€Π³ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°.
  2. Π§Π΅Ρ€Π΅Π· REST API ΠΈΠ»ΠΈ прямыС запросы ΠΊ Π±Π°Π·Π΅.
    Π‘ΠΎΠ»Π΅Π΅ Π³ΠΈΠ±ΠΊΠΈΠΉ, Π½ΠΎ ΠΈ Π±ΠΎΠ»Π΅Π΅ слоТный способ. НапримСр, ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ Π² 1Π‘, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ отправляСт Π΄Π°Π½Π½Ρ‹Π΅ Π½Π° ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ URL Битрикс Ρ‡Π΅Ρ€Π΅Π· HTTP-запросы ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ web-сСрвисы.

Π’ΠΈΠΏΠΈΡ‡Π½Ρ‹Π΅ ошибки ΠΏΡ€ΠΈ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ:

  • ❌ НСсовпадСниС ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ². Π’ 1Π‘ ΠΈ Битрикс ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Ρ€Π°Π·Π½Ρ‹Π΅ ID для ΠΎΠ΄Π½ΠΈΡ… ΠΈ Ρ‚Π΅Ρ… ΠΆΠ΅ сущностСй (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‚ΠΎΠ²Π°Ρ€ с ID=123 Π² 1Π‘ ΠΈΠΌΠ΅Π΅Ρ‚ XML_ID="123" Π² Битрикс). РСшСниС: всСгда ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ соотвСтствиС ΠΏΠΎΠ»Π΅ΠΉ XML_ID.
  • ❌ Π’Π°ΠΉΠΌ-Π°ΡƒΡ‚Ρ‹ ΠΏΡ€ΠΈ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΎΠ±ΡŠΡ‘ΠΌΠ°Ρ… Π΄Π°Π½Π½Ρ‹Ρ…. Если XML-Ρ„Π°ΠΉΠ» вСсит нСсколько Π³ΠΈΠ³Π°Π±Π°ΠΉΡ‚, Π΅Π³ΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€Π΅Ρ€Π²Π°Ρ‚ΡŒΡΡ. РСшСниС: Π΄Ρ€ΠΎΠ±ΠΈΡ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹ ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ постраничный ΠΈΠΌΠΏΠΎΡ€Ρ‚.
  • ❌ ΠšΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Ρ‹ ΠΏΡ€ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ. Если Ρ‚ΠΎΠ²Π°Ρ€ измСнился ΠΈ Π² 1Π‘, ΠΈ Π² Битрикс, ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΡ‚ΠΈ ΠΏΠ΅Ρ€Π΅Π·Π°ΠΏΠΈΡΡŒ Π΄Π°Π½Π½Ρ‹Ρ…. РСшСниС: Π½Π°ΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»Π° ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Π° (Ρ‡Ρ‚ΠΎ Π²Π°ΠΆΠ½Π΅Π΅ β€” Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· 1Π‘ ΠΈΠ»ΠΈ Ρ€ΡƒΡ‡Π½Ρ‹Π΅ ΠΏΡ€Π°Π²ΠΊΠΈ Π² Битрикс).

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ΄Π° для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π·Π°ΠΊΠ°Π·Π° ΠΈΠ· 1Π‘ Π² Битрикс:

// ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· XML (ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΡƒΠΏΡ€ΠΎΡ‰Ρ‘Π½)

$orderData = [

"XML_ID" => "ORDER_456", // ID Π·Π°ΠΊΠ°Π·Π° Π² 1Π‘

"PRICE" => 1500.00,

"CURRENCY" => "RUB",

"USER_ID" => 123, // ID ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Π² Битрикс

"ITEMS" => [

["PRODUCT_XML_ID" => "PRODUCT_789", "QUANTITY" => 2]

]

];

// Π‘ΠΎΠ·Π΄Π°Ρ‘ΠΌ Π·Π°ΠΊΠ°Π· Π² Битрикс

$order = CSaleOrder::GetList([], ["XML_ID" => $orderData["XML_ID"]]);

if (!$order->Fetch()) {

$orderId = CSaleOrder::Add([

"LID" => "s1", // ID сайта

"PERSON_TYPE_ID" => 1, // Π’ΠΈΠΏ ΠΏΠ»Π°Ρ‚Π΅Π»ΡŒΡ‰ΠΈΠΊΠ°

"USER_ID" => $orderData["USER_ID"],

"XML_ID" => $orderData["XML_ID"],

"PRICE" => $orderData["PRICE"],

"CURRENCY" => $orderData["CURRENCY"]

]);

// ДобавляСм Ρ‚ΠΎΠ²Π°Ρ€Ρ‹ Π² Π·Π°ΠΊΠ°Π·

foreach ($orderData["ITEMS"] as $item) {

$productId = CIBlockElement::GetList([], [

"XML_ID" => $item["PRODUCT_XML_ID"],

"IBLOCK_ID" => 10 // ID ΠΈΠ½Ρ„ΠΎΠ±Π»ΠΎΠΊΠ° Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ²

])->Fetch()["ID"];

CSaleBasket::Add([

"ORDER_ID" => $orderId,

"PRODUCT_ID" => $productId,

"QUANTITY" => $item["QUANTITY"]

]);

}

}

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Начиная с вСрсии 1Π‘-Битрикс 22.0.0, ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ΠΎΠ±ΠΌΠ΅Π½Π° с 1Π‘ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π½ΠΎΠ²Ρ‹ΠΉ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ CommerceML 3.0, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ свойства Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² ΠΈ Π·Π°ΠΊΠ°Π·ΠΎΠ². ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ Π²Π΅Ρ€ΡΠΈΡŽ модуля Π² Π°Π΄ΠΌΠΈΠ½ΠΊΠ΅ (Настройки β†’ ΠœΠΎΠ΄ΡƒΠ»ΠΈ β†’ 1C:Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ сайтом).

Π‘Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ: ΠΊΠ°ΠΊ Битрикс Π·Π°Ρ‰ΠΈΡ‰Π°Π΅Ρ‚ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈ Π³Π΄Π΅ слабыС мСста

1Π‘-Битрикс позиционируСтся ΠΊΠ°ΠΊ бСзопасная ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° для ΠΊΠΎΡ€ΠΏΠΎΡ€Π°Ρ‚ΠΈΠ²Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ², Π½ΠΎ Π΅Ρ‘ Π·Π°Ρ‰ΠΈΡ‚Π° Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΠΌ зависит ΠΎΡ‚ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΉ настройки. Рассмотрим ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹ бСзопасности ΠΈ Ρ‚ΠΈΠΏΠΈΡ‡Π½Ρ‹Π΅ уязвимости.

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ ΡƒΡ€ΠΎΠ²Π½ΠΈ Π·Π°Ρ‰ΠΈΡ‚Ρ‹:

  • πŸ” АутСнтификация ΠΈ авторизация. Битрикс ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ стандартныС ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹ Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ (Π»ΠΎΠ³ΠΈΠ½Ρ‹/ΠΏΠ°Ρ€ΠΎΠ»ΠΈ, OAuth), Π° Ρ‚Π°ΠΊΠΆΠ΅ Π΄Π²ΡƒΡ…Ρ„Π°ΠΊΡ‚ΠΎΡ€Π½ΡƒΡŽ Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ (2FA) Ρ‡Π΅Ρ€Π΅Π· SMS ΠΈΠ»ΠΈ прилоТСния Π²Ρ€ΠΎΠ΄Π΅ Google Authenticator.
  • πŸ›‘οΈ Π—Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ Π°Ρ‚Π°ΠΊ. ВстроСнныС ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹ ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ SQL-ΠΈΠ½ΡŠΠ΅ΠΊΡ†ΠΈΠΈ (Ρ‡Π΅Ρ€Π΅Π· CDatabase::Query), XSS (экранированиС Π²Ρ‹Π²ΠΎΠ΄Π° Ρ‡Π΅Ρ€Π΅Π· htmlspecialcharsbx) ΠΈ CSRF (Ρ‚ΠΎΠΊΠ΅Π½Ρ‹ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ…).
  • πŸ”’ ΠŸΡ€Π°Π²Π° доступа. Гибкая систСма разграничСния ΠΏΡ€Π°Π² (ΠΌΠΎΠ΄ΡƒΠ»ΡŒ main) позволяСт Π½Π°ΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒ доступ ΠΊ Π°Π΄ΠΌΠΈΠ½ΠΊΠ΅, Ρ„Π°ΠΉΠ»Π°ΠΌ ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌ для Ρ€Π°Π·Π½Ρ‹Ρ… Π³Ρ€ΡƒΠΏΠΏ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ.
  • πŸ“‘ Π—Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS. Π’ Π½ΠΎΠ²Ρ‹Ρ… вСрсиях Π΅ΡΡ‚ΡŒ встроСнный ΠΌΠΎΠ΄ΡƒΠ»ΡŒ security, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ количСство запросов с ΠΎΠ΄Π½ΠΎΠ³ΠΎ IP.

Π’ΠΈΠΏΠΈΡ‡Π½Ρ‹Π΅ уязвимости ΠΈ ΠΊΠ°ΠΊ ΠΈΡ… ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ:

Π£ΡΠ·Π²ΠΈΠΌΠΎΡΡ‚ΡŒ ΠŸΡ€ΠΈΡ‡ΠΈΠ½Π° РСшСниС
Π£Ρ‚Π΅Ρ‡ΠΊΠ° Π΄Π°Π½Π½Ρ‹Ρ… Ρ‡Π΅Ρ€Π΅Π· SQL-ΠΈΠ½ΡŠΠ΅ΠΊΡ†ΠΈΠΈ ΠŸΡ€ΡΠΌΡ‹Π΅ SQL-запросы Π±Π΅Π· экранирования Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ CIBlockElement::GetList ΠΈΠ»ΠΈ $DB->Prepare
XSS Π² ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠΌ ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚Π΅ Π’Ρ‹Π²ΠΎΠ΄ нСэкранированного HTML (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΈΠ· свойств ΠΈΠ½Ρ„ΠΎΠ±Π»ΠΎΠΊΠ°) ΠŸΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ htmlspecialcharsbx ΠΈΠ»ΠΈ Π½Π°ΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Ρ‹ Π² ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°Ρ…
НСсанкционированный доступ ΠΊ Π°Π΄ΠΌΠΈΠ½ΠΊΠ΅ Π‘Π»Π°Π±Ρ‹Π΅ ΠΏΠ°Ρ€ΠΎΠ»ΠΈ ΠΈΠ»ΠΈ отсутствиС 2FA Π’ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ 2FA ΠΈ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚ΡŒ доступ ΠΏΠΎ IP Π² .htaccess
Π£Ρ‚Π΅Ρ‡ΠΊΠ° Ρ„Π°ΠΉΠ»ΠΎΠ² (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, bitrix/.settings.php) НСкоррСктныС настройки Π²Π΅Π±-сСрвСра Π—Π°ΠΏΡ€Π΅Ρ‚ΠΈΡ‚ΡŒ доступ ΠΊ систСмным ΠΏΠ°ΠΏΠΊΠ°ΠΌ Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³Π΅ Nginx/Apache

ОсобоС Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ стоит ΡƒΠ΄Π΅Π»ΠΈΡ‚ΡŒ бСзопасности ΠΎΠ±ΠΌΠ΅Π½Π° с 1Π‘. Часто интСграция настраиваСтся Ρ‡Π΅Ρ€Π΅Π· FTP ΠΈΠ»ΠΈ HTTP с простыми Π»ΠΎΠ³ΠΈΠ½Π°ΠΌΠΈ/паролями, Ρ‡Ρ‚ΠΎ создаёт риск ΠΏΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‚Π° Π΄Π°Π½Π½Ρ‹Ρ…. Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ:

  • Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ SFTP вмСсто FTP.
  • НастраивайтС HTTPS для ΠΎΠ±ΠΌΠ΅Π½Π° Π΄Π°Π½Π½Ρ‹ΠΌΠΈ.
  • ΠžΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°ΠΉΡ‚Π΅ доступ ΠΊ /bitrix/admin/1c_exchange.php ΠΏΠΎ IP Π² .htaccess:
<Files "1c_exchange.php">

Require ip 192.168.1.100 # IP сСрвСра 1Π‘

</Files>

πŸ”Ή ΠžΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ систСму Π΄ΠΎ послСднСй вСрсии

πŸ”Ή Π’ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ 2FA для Π°Π΄ΠΌΠΈΠ½ΠΊΠΈ

πŸ”Ή ΠžΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ /bitrix/ ΠΏΠΎ IP

πŸ”Ή ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ ΠΏΡ€Π°Π²Π° Π½Π° Ρ„Π°ΠΉΠ»Ρ‹ (Π½Π΅ Π²Ρ‹ΡˆΠ΅ 755 для ΠΏΠ°ΠΏΠΎΠΊ, 644 для Ρ„Π°ΠΉΠ»ΠΎΠ²)

πŸ”Ή ΠΠ°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ HTTPS ΠΈ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΠ΅ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Ρ‹ (SSLv3, TLS 1.0)

-->

ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ: ΠΊΠ°ΠΊ ΡƒΡΠΊΠΎΡ€ΠΈΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ сайта Π½Π° Битрикс

МногиС ΠΆΠ°Π»ΡƒΡŽΡ‚ΡΡ, Ρ‡Ρ‚ΠΎ 1Π‘-Битрикс Β«Ρ‚ΠΎΡ€ΠΌΠΎΠ·ΠΈΡ‚Β». Часто это связано Π½Π΅ с самой CMS, Π° с Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΉ настройкой сСрвСра, кэша ΠΈΠ»ΠΈ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…. Π Π°Π·Π±Π΅Ρ€Ρ‘ΠΌ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ ΠΌΠΎΠΌΠ΅Π½Ρ‚Ρ‹ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ.

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ направлСния для ускорСния:

  • ⚑ ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ….
    РСгулярно выполняйтС:
    OPTIMIZE TABLE b_iblock_element;
    

    ANALYZE TABLE b_iblock_element;

    УдаляйтС Π½Π΅ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ ΠΈΠ½Ρ„ΠΎΠ±Π»ΠΎΠΊΠΈ ΠΈ ΠΎΡ‡ΠΈΡ‰Π°ΠΉΡ‚Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ b_file ΠΎΡ‚ Π½Π΅Π½ΡƒΠΆΠ½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ².

  • πŸ—ƒοΈ Настройка ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ.
    Π’ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅:
    • Кэш ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² (Π² ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°Ρ… ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°).
    • УправляСмый кэш для слоТных ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ.
    • ΠšΠΎΠΌΠΏΠΎΠ·ΠΈΡ‚Π½Ρ‹ΠΉ кэш для статичСских страниц.
  • πŸ–₯️ ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ сСрвСра.
    РСкомСндуСмая конфигурация:
    • PHP 8.1+ с OPcache.
    • MySQL 8.0+ с настройкой innodb_buffer_pool_size (Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ 50% ΠΎΡ‚ доступной RAM).
    • Π’Π΅Π±-сСрвСр Nginx + PHP-FPM (быстрСС, Ρ‡Π΅ΠΌ Apache).
  • πŸ“¦ ΠœΠΈΠ½ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ Π²Π½Π΅ΡˆΠ½ΠΈΡ… запросов.
    ΠžΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ Π½Π΅Π½ΡƒΠΆΠ½Ρ‹Π΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, statistic, Ссли Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ статистику). Π—Π°ΠΌΠ΅Π½ΠΈΡ‚Π΅ внСшниС ΡˆΡ€ΠΈΡ„Ρ‚Ρ‹ (Google Fonts) Π½Π° Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ Nginx для Битрикс:

server {

listen 80;

server_name example.com;

root /var/www/example.com;

index index.php;

location / {

try_files $uri $uri/ /index.php?$args;

}

location ~ \.php$ {

fastcgi_pass unix:/run/php/php8.1-fpm.sock;

fastcgi_index index.php;

fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

include fastcgi_params;

# Π’Π°ΠΆΠ½ΠΎ для Битрикс

fastcgi_param HTTP_HOST $host;

fastcgi_param REMOTE_ADDR $remote_addr;

fastcgi_param SCRIPT_NAME $fastcgi_script_name;

}

location ~ /bitrix/.*\.(php|php3|phtml|pl)$ {

deny all;

}

}

Π•Ρ‰Ρ‘ ΠΎΠ΄ΠΈΠ½ Π²Π°ΠΆΠ½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ β€” оптимизация ΠΈΠ½Ρ„ΠΎΠ±Π»ΠΎΠΊΠΎΠ². Если Ρƒ вас тысячи элСмСнтов, ΠΈΠ·Π±Π΅Π³Π°ΠΉΡ‚Π΅ Π²Ρ‹Π±ΠΎΡ€ΠΎΠΊ Π²ΠΈΠ΄Π°:

// ΠŸΠ»ΠΎΡ…ΠΎ (Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚ всС поля)

$res = CIBlockElement::GetList([], ["IBLOCK_ID" => 10]);

// Π₯ΠΎΡ€ΠΎΡˆΠΎ (Π²Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½ΡƒΠΆΠ½Ρ‹Π΅ поля)

$res = CIBlockElement::GetList(

[],

["IBLOCK_ID" => 10],

false,

false,

["ID", "NAME", "DETAIL_PAGE_URL"]

);

FAQ: ЧастыС вопросы ΠΎ Ρ€Π°Π±ΠΎΡ‚Π΅ 1Π‘-Битрикс

Как ΡƒΠ·Π½Π°Ρ‚ΡŒ, какая вСрсия Битрикс установлСна?

Π’Π΅Ρ€ΡΠΈΡŽ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ:

  1. Π’ Π°Π΄ΠΌΠΈΠ½ΠΊΠ΅: Настройки β†’ Настройки ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π° β†’ О ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅.
  2. Π’ Ρ„Π°ΠΉΠ»Π΅ /bitrix/modules/main/install/version.php (строка $arModuleVersion["VERSION"]).
  3. Π§Π΅Ρ€Π΅Π· консоль: php /path/to/bitrix/modules/main/install/version.php.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π²Ρ‹Π²ΠΎΠ΄Π° вСрсии Ρ‡Π΅Ρ€Π΅Π· ΠΊΠΎΠ΄:

<?php

$arModuleVersion = [];

include($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/install/version.php");

echo "ВСрсия Битрикс: ".$arModuleVersion["VERSION"];

?>

ΠŸΠΎΡ‡Π΅ΠΌΡƒ послС измСнСния Ρ‚ΠΎΠ²Π°Ρ€Π° Π² Π°Π΄ΠΌΠΈΠ½ΠΊΠ΅ измСнСния Π½Π΅ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°ΡŽΡ‚ΡΡ Π½Π° сайтС?

Π­Ρ‚ΠΎ типичная ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° с ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅:

  1. ΠžΡ‡ΠΈΡΡ‚ΠΈΡ‚Π΅ кэш ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° (Настройки β†’ Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ β†’ ΠžΡ‡ΠΈΡΡ‚ΠΊΠ° кэша).
  2. Если ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡ‚Π½Ρ‹ΠΉ кэш, ΡΠ±Ρ€ΠΎΡΡŒΡ‚Π΅ Π΅Π³ΠΎ (Настройки β†’ Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ β†’ ΠšΠΎΠΌΠΏΠΎΠ·ΠΈΡ‚Π½Ρ‹ΠΉ сайт β†’ Π‘Π±Ρ€ΠΎΡΠΈΡ‚ΡŒ кэш).
  3. Π£Π±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ Π² ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°Ρ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° ΡƒΠΊΠ°Π·Π°Π½ΠΎ "CACHE_TYPE" => "A" (Π°Π²Ρ‚ΠΎ) ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ΅ врСмя ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ.
  4. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ ΠΏΡ€Π°Π²Π° доступа: Ссли кэш зависит ΠΎΡ‚ Π³Ρ€ΡƒΠΏΠΏΡ‹ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ ("CACHE_GROUPS" => "Y"), Π½ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π½Π΅ Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·ΠΎΠ²Π°Π½, ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ для гостСй.
Как ΠΎΡ‚Π»Π°Π΄ΠΈΡ‚ΡŒ ΠΎΠ±ΠΌΠ΅Π½ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ с 1Π‘, Ссли ΠΎΠ½ Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚?

Алгоритм поиска ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹:

  1. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ Π»ΠΎΠ³ΠΈ ΠΎΠ±ΠΌΠ΅Π½Π° Π² /bitrix/modules/1c.exchange/log/.
  2. Π£Π±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ Ρ„Π°ΠΉΠ» import.xml загруТаСтся Π½Π° сСрвСр (ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ ΠΏΡ€Π°Π²Π° Π½Π° ΠΏΠ°ΠΏΠΊΡƒ /upload/1c_catalog/).
  3. Π’ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ Π²Ρ‹Π²ΠΎΠ΄ ошибок Π² 1c_exchange.php, Π΄ΠΎΠ±Π°Π²ΠΈΠ² Π² Π½Π°Ρ‡Π°Π»ΠΎ Ρ„Π°ΠΉΠ»Π°:
    error_reporting(E_ALL);
    

    ini_set("display_errors", 1);

  4. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ соотвСтствиС XML_ID Π² 1Π‘ ΠΈ Битрикс (ΠΎΠ½ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡΠΎΠ²ΠΏΠ°Π΄Π°Ρ‚ΡŒ для связки сущностСй).
  5. Если ΠΎΠ±ΠΌΠ΅Π½ Ρ‚ΠΎΡ€ΠΌΠΎΠ·ΠΈΡ‚, Ρ€Π°Π·Π±