Перейти к содержанию
seba13

OCMOD и объединение JS и CSS в два фаила

Рекомендуемые сообщения

С первого дня разработки сайтов на OCStore понял что OCMOD-ы можно не устанавливать, а просто копировать в папку sistem, за время разработки там накопилось не мало скриптов.

После открытия сайта были обнаружены проблемы с битыми картинками (ошибка 503) оказалось что ограничение сервера 70 фаилов в секунду. Сделал lazy load это решило проблему но прям по верхней границе. yslow: "This page has 27 external Javascript scripts. Try combining them into one. This page has 12 external stylesheets. Try combining them into one." Кто и как решал проблему с объединением? Что делать с OCMOD-ами? 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
49 минут назад, seba13 сказал:

С первого дня разработки сайтов на OCStore понял что OCMOD-ы можно не устанавливать, а просто копировать в папку sistem, за время разработки там накопилось не мало скриптов.

После открытия сайта были обнаружены проблемы с битыми картинками (ошибка 503) оказалось что ограничение сервера 70 фаилов в секунду. Сделал lazy load это решило проблему но прям по верхней границе. yslow: "This page has 27 external Javascript scripts. Try combining them into one. This page has 12 external stylesheets. Try combining them into one." Кто и как решал проблему с объединением? Что делать с OCMOD-ами? 

зря в систем кидали

их же через установщик если пихать то отрубать и редачить через админку можно

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
<?php
$cache_time = 600000;

$file = strrchr($_SERVER["SCRIPT_NAME"], "/");
$file = substr($file, 1);
$cache_file = "cache.$file.js";
if (file_exists($cache_file)) {
    if ((time() - $cache_time) < filemtime($cache_file)) {
        echo file_get_contents($cache_file);
        exit;
    }
}


//jquery bootstrap
$input_content.= file_get_contents( "catalog/view/javascript/ocdev_smart_checkout/jquery-1.7.1.min.js");
$input_content.= "var smch_old_jqury = jQuery.noConflict();";
$input_content.= file_get_contents( "catalog/view/javascript/jquery/jquery-2.1.1.min.js");
$input_content.= file_get_contents( "catalog/view/javascript/bootstrap/js/bootstrap.min.js");
$input_content.= file_get_contents( "catalog/view/javascript/common.js");

// Скрипты быстрого заказа
$input_content.= file_get_contents("catalog/view/javascript/ocdev_smart_checkout/ocdev_smart_checkout.js");
$input_content.= file_get_contents( "catalog/view/javascript/ocdev_smart_checkout/inputmask.js");
$input_content.= file_get_contents( "catalog/view/javascript/ocdev_smart_checkout/jquery.placeholder.js");
$input_content.= file_get_contents( "catalog/view/javascript/jquery/datetimepicker/moment.js");
$input_content.= file_get_contents( "catalog/view/javascript/jquery/datetimepicker/bootstrap-datetimepicker.min.js");

//Разные
$input_content.= file_get_contents( "catalog/view/javascript/readmore.min.js");
$input_content.= file_get_contents( "catalog/view/javascript/blazy.min.js");
$input_content.= file_get_contents( "catalog/view/javascript/jquery/jquery.geoip-module.js");




$request = curl_init();
$post_data = 'compilation_level=SIMPLE_OPTIMIZATIONS'
    .'&output_format=text'
    .'&output_info=compiled_code'
    .'&js_code='.urlencode($input_content);
curl_setopt_array($request, array(
    CURLOPT_URL            => 'https://closure-compiler.appspot.com/compile',
    CURLOPT_RETURNTRANSFER => 1,
    CURLOPT_POST           => 1,
    CURLOPT_POSTFIELDS     => $post_data,
));
$result = curl_exec($request);

$handle = fopen($cache_file, 'w');
fwrite($handle, $result);
fclose($handle);

echo $result;

Если кому интересно решил проблему таким образом: все фаилы js записываются в одну переменную, далее отправляются в гугл для сжатия, после записываются в кеш фаил, если кеш уже есть и он не просрочен то читается он на этом функция завершается. Называйте фаил php как хотите, лучше располагать в корне сайта - так меньше геморроя с адресами.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
12 часов назад, seba13 сказал:

Если кому интересно...

Если Вам не сложно, Вы не могли бы ответить:

Зачем нужны вот эти скрипты:

catalog/view/javascript/jquery/datetimepicker/moment.js
catalog/view/javascript/jquery/datetimepicker/bootstrap-datetimepicker.min.js

Если их просто удалить, что сломается? И зачем обязательно оба? Может быть можно хотя бы один из них удалить?

...

И ещё, зачем вот эти скрипты:

catalog/view/javascript/jquery/jquery-2.1.1.min.js
catalog/view/javascript/ocdev_smart_checkout/jquery-1.7.1.min.js

Точнее говоря, зачем ОБА? Одного не хватит?

...

Просто у меня тоже накопилась куча скриптов.

Насколько я понял, если скрипт хоть раз, хоть где-то используется (или даже просто может использоваться), то он грузиться тупо на всех страницах. Как-то неправильно, кмк.

Если Вы не работаете с датами на странице категории (например), то зачем грузить туда datetimepicker, а тем более два?

 

Изменено пользователем florapraktik

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

@florapraktik Здесь показана технология сжатия

Конечно, правильный вариант - собрать все в getScript, getStyle
сжать
закешировать файл
 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
29 минут назад, chukcha сказал:

@florapraktik Здесь показана технология сжатия

Я понимаю (наверное).

Но зачем сжимать то, что вообще не нужно? Поэтому мне показалось, что мой вопрос будет уместен.

Кмк, прежде чем собирать всё в кучу имеет смысл убрать лишнее. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
52 минуты назад, florapraktik сказал:

имеет смысл убрать лишнее. 

все верно

 

 

 

 

1 час назад, chukcha сказал:

правильный вариант - собрать все в getScript, getStyle

получить md5 - даст уникальность для кеша


 

$input_content.= file_get_contents( "catalog/view/javascript/readmore.min.js");
$input_content.= file_get_contents( "catalog/view/javascript/blazy.min.js");
$input_content.= file_get_contents( "catalog/view/javascript/jquery/jquery.geoip-module.js");


желательно объединять с точкой запятой

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.