Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

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


seba13

Recommended Posts

С первого дня разработки сайтов на 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 користувачів

    • Ні користувачів, які переглядиють цю сторінку

×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.