Ускорение работы сайта на 1С-Битрикс
Файл использованный в заметке
https://camouf.ru/blog-note/9223/index...de_areas=Y
Файл использованный в заметке
https://camouf.ru/blog-note/9223/index...de_areas=Y
cordova plugin add cordova-plugin-remote-injection |
<content src="АДРЕС_СТАРТОВОЙ_СТРАНИЦЫ" /> <allow-navigation href="АДРЕС_САЙТА/* /> |
<preference name="CRIInjectFirstFiles" value = "ПУТЬ_К_ФАЛУ/file.js " /> |
cordova.plugins.IMEI(function (err, imei) { console.log('imei', imei) }) |
Этот плагин может многое, описание на github Главное, для чего его можно использовать: Не сжимать страницу при появлении клавиатуры cordova.plugins.Keyboard.disableScroll(true); |
\Bitrix\Main\UI\Extension::load("ui.vue"); |
<div class="more_photos"> <a href="<? echo $arResult['DETAIL_PICTURE']['SRC'] ?>" class="current"> <img src="<? echo $arResult['DETAIL_PICTURE']['SRC'] ?>" alt="<? echo $arResult['NAME'] ?>"> </a> <? if (count($arResult["MORE_PHOTO"]) > 0) { foreach ($arResult["MORE_PHOTO"] as $PHOTO) { $renderImage = CFile::ResizeImageGet($PHOTO, Array("width" => 200, "height" => 200), BX_RESIZE_IMAGE_EXACT, false); ?> <a href="<?= $PHOTO["SRC"]; ?>" alt="<? echo $arResult['NAME'] ?>"> <img src="<?= $PHOTO["SRC"]; ?>" alt="<? echo $arResult['NAME'] ?>"> </a> <? } } ?> </div> |
$(".more_photos").on("click", "a", function () { $(this).addClass("current").siblings().removeClass("current") $(".main_photo img").attr("src", $(this).prop("href")) return false; }); |
.more_photos { float: left; width: 100px; } .more_photos a { display: block; margin-bottom: 10px; text-decoration: none; width: 100%; height: 100px; border: 3px #fff solid; box-shadow: 0px 0px 1px #ccc; transition: all .25s ease-out; } .more_photos a:hover { border: 3px #f6f6f6 solid; } .more_photos a.current { border: 3px #D68189 solid; } .main_photo { float: right; width: calc(100% - 110px); } .main_photo img { width: 100%; transition: all .25s ease-out; } |
<div class="more_photos"> <a href="<? echo $arResult['DETAIL_PICTURE']['SRC'] ?>" class="current"> <img src="<? echo $arResult['DETAIL_PICTURE']['SRC'] ?>" alt="<? echo $arResult['NAME'] ?>"> </a> <? if (count($arResult["PHOTOS"]) > 0) { foreach ($arResult["PHOTOS"] as $PHOTO) { $renderImage = CFile::ResizeImageGet($PHOTO, Array("width" => 200, "height" => 200), BX_RESIZE_IMAGE_EXACT, false); ?> <a href="<?= $PHOTO["SRC"]; ?>" alt="<? echo $arResult['NAME'] ?>"> <img src="<?= $PHOTO["SRC"]; ?>" alt="<? echo $arResult['NAME'] ?>"> </a> <? } } ?> </div> |
<div class="more_photos"> <a href="<? echo $arResult['DETAIL_PICTURE']['SRC'] ?>" class="current"> <img src="<? echo $arResult['DETAIL_PICTURE']['SRC'] ?>" alt="<? echo $arResult['NAME'] ?>"> </a> <? if (count($arResult["MORE_PHOTO"]) > 0) { foreach ($arResult["MORE_PHOTO"] as $PHOTO) { $renderImage = CFile::ResizeImageGet($PHOTO, Array("width" => 200, "height" => 200), BX_RESIZE_IMAGE_EXACT, false); ?> <a href="<?= $PHOTO["SRC"]; ?>" alt="<? echo $arResult['NAME'] ?>"> <img src="<?= $PHOTO["SRC"]; ?>" alt="<? echo $arResult['NAME'] ?>"> </a> <? } } ?> </div> |
apt-get update apt-get upgrade |
sudo apt-get install apache2 |
sudo systemctl enable apache2 |
sudo apt-get install php7.2-cli |
php -v (покажет версию php) |
sudo systemctl restart apache2 |
sudo apt install mysql-server |
sudo mkdir /var/run/mysqld; sudo chown mysql /var/run/mysqld sudo mysqld_safe --skip-grant-tables& sudo mysql --user=root mysql |
mysql> update user set authentication_string=PASSWORD('PASSWORD') where user='root'; flush privileges; |
sudo apt-get install phpmyadmin php-mbstring php-gettext |
mkdir /var/www/site.ru/public_html |
nano /etc/apache2/sites-available/site.ru.conf |
<VirtualHost *:80> ServerName site.ru ServerAlias site.ru ServerAdmin webmaster@localhost DocumentRoot /var/www/site.ru/public_html/ <Directory /var/www/site.ru/public_html/> Options Indexes FollowSymLinks MultiViews AllowOverride All DirectoryIndex index.php index.html index.htm php_admin_value short_open_tag On php_admin_value mbstring.func_overload 2 php_admin_value mbstring.internal_encoding UTF-8 php_admin_value date.timezone Europe/Moscow php_admin_value opcache.revalidate_freq 0 php_admin_value opcache.max_accelerated_files 100000 php_admin_value display_errors On php_admin_value max_input_vars 10000 php_admin_value upload_max_filesize 8M Require all granted </Directory> ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost> |
sudo a2ensite site.ru |
sudo systemctl restart apache2 |
sudo mysql --user=root mysql CREATE USER 'USER_NAME'@'localhost' IDENTIFIED BY 'PASSWORD'; GRANT ALL PRIVILEGES ON * . * TO 'USER_NAME'@'localhost'; FLUSH PRIVILEGES; |
<? $filter = Array ( "GROUPS_ID"=> Array(5)) ); $rsUsers = CUser::GetList(($by="id"), ($order="desc"), $filter); while($arItem = $rsUsers->GetNext()) { if (CUser::Delete($arItem['ID'])) echo "Пользователь " .$arItem['ID']. " удален"; } ?> |
<? global $USER; $curUserId = $USER->GetID(); // ID текущего пользователя $arGroups = CUser::GetUserGroup($curUserId); // ID групп текущего пользователя foreach ($arGroups as $curUserGroups) { $rsGroup = CGroup::GetByID($curUserGroups); // Получаем названия всех групп $arGroup = $rsGroup->Fetch(); if ($arGroup['ID'] !== '2') { echo $arGroup['NAME']; // И выводим } } ?> |
$jsParams = array( 'PRODUCT' => array( 'PREVIEW_TEXT' => $arResult['~PREVIEW_TEXT'], ), ); <script> var <?=$obName?> = new JCCatalogElement(<?=CUtil::PhpToJSObject($jsParams, false, true)?>); </script> |
this.product.text = this.params.PRODUCT.PREVIEW_TEXT; |
<div id="keyborad_show" class="bottom_fixed"> <a href="/mobileapp/dynamic/audio"><span class="fa fa-file-audio-o"></span> Аудио</a> <a href="/mobileapp/dynamic/video/"><span class="fa fa-file-video-o"></span> Видео</a> <a href="/mobileapp/dynamic/trand/"><span class="fa fa-fire"></span> Тренд</a> </div> |
BXMobileApp.UI.Page.captureKeyboardEvents(true); |
var keyboard = document.getElementById('keyborad_show'); BX.addCustomEvent("onKeyboardDidShow", function(){ // Событие появления клавиатуры $(keyboard).addClass('dn_bf'); }); |
.dn_bf { display: none; } |
$(window).on('ready', function(event){ BX.Sale.OrderAjaxComponent.editDeliveryBlock(true); BX.Sale.OrderAjaxComponent.editPaySystemBlock(true); }); |
BX.Sale.OrderAjaxComponent.editActiveBasketBlock(true); BX.Sale.OrderAjaxComponent.editActiveRegionBlock(true); BX.Sale.OrderAjaxComponent.this.editActiveDeliveryBlock(true); BX.Sale.OrderAjaxComponent.editActivePaySystemBlock(true); BX.Sale.OrderAjaxComponent.editActivePickUpBlock(true); BX.Sale.OrderAjaxComponent.editActivePropsBlock(true); |
this.getBlockFooter(deliveryContent); |
this.getBlockFooter(paySystemContent); |
Для групп которым композит не работает показывается mod_pagespeed и переназваные img и тд.
А вот для групп с композитом ситуация иная, сначала подрубается на пол секунды то что отдает mod_pagespeed, но потом сразу композит перекрывает весь DOM своим контентом в котором остались старые пути без конвертации.
Я так понял что композит делает слепок до отработки mod_pagespeed, и следовательно не может сохранить его с изменениями и потом отдавать.
Что думаете по этому поводу?
Именно с композитом проблем не было, но он картинки сильно портит, и какие-то не лепые названия им дает.
Плюс, с обработкой скриптов и css - не все гладко проходит.
Самое главное, особо ускорения не дает.
В целом, пока, забил его использовать- нужно побольше времени поизучать, прежде чем использовать на реальных проектах.