Загрузка jquery с серверов Google или Yandex

Загрузка jquery с серверов Google или Yandex

Для создания анимации добавления товаров в корзину, вращающихся каруселей сопутствующих товаров и многих других вещей в PrestaShop используется библиотека JQuery. Проблема с ней заключается в том, что ее использование требует от ваших покупателей дополнительной загрузки 31 Кб (в минифицированном виде). Google Libraries API или хостинг JavaScript-библиотек от Яндекса (CDN) можно использовать для хранения JQuery, тем самым экономя пропускную способность вашего канала, что позволит ускорить ваш магазин!

Преимущества загрузки jquery с CDN

  1. Параллелизация загрузки. Браузеры, как правило, загржают одновременно только 3-4 файла с одного домена. Использование CDN позволяет увеличить количество слотов загрузки.
  2. Кэширование на стороне клиента. Возможно посетитель уже скачал jquery при посещении других сайтов и он находится в кэше браузера, что исключает повторную загрузку библиотеки.
  3. Минимальный размер из-за gzip сжатия. Даже если ваш сервер не поддерживает gzip-сжатие сервера Гугла или Яндекса отдадут jquery в сжатом виде.
  4. Снижение нагрузки на сервер. Загрузка jquery со сторонних серверов снижает нагрузку на ваш сайт. Особенно октуально, если вы платите за траффик.
  5. Сервера по всему миру. Сервера Гугла размещены по всему миру, загрузка jquery будет происходить с ближайшего к вашему клиенту сервера.

Откуда загружать?

Возможность загрузки jquery предоставляют несколько сервисов. Если клиенты вашего магазина расположены по всему миру, то предпочтительней будет использовать сервера Google. Для магазинов, ориентированных на Российских покупателей лучше использовать хранилища Яндекса, скорость загрузки с них будет выше.

Переопределение класса Prestashop

Создайте новый файл /override/classes/FrontController.php со следующим содержимым:

<?php
class FrontController extends FrontControllerCore {
     public function setMedia() {
         parent::setMedia();
 
         /*
         * Use Google Libraries API to host jQuery
         */
         global $js_files;
         $index = array_search(_PS_JS_DIR_ . 'jquery/jquery-1.4.4.min.js', $js_files);
         if ($index !== false){
             array_splice($js_files, $index, 1, array('//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js'));
         } else {
             $js_files[] = '//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js';
         }
     }
}

Если хотите использовать хостинг JavaScript-библиотек от Яндекса замените в коде

//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js

на

//yandex.st/jquery/1.7.1/jquery.min.js

Обсуждение

Рустам, 2012/06/01 11:32

хорошая штука, только вот:

1.перестают работать комбинации 2.слетают «отзывы» и последующие вкладки со страницы продукта в первую вкладку «информация»

PrestaLab, 2012/06/02 16:34

Это значит, что jquery у вас не загружается

proceed, 2012/07/12 01:00

Как я понимаю, это для 1.4* Престы. Подскажите, а как для 1.3.6 сделать подобное?

proceed, 2012/07/12 01:54

Сам разобрался вроде бы)

В header.tpl заменяем Код: <script type=«text/javascript» src=»{$content_dir}js/jquery/jquery-1.2.6.pack.js»></script> на <script src=«http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js» type=«text/javascript»></script>

dff, 2012/08/01 10:59

..и не забудьте выключить ССС для JavaScript (Оставить оригинальный JavaScript) иначе работать нормально не будет..

Роман, 2012/11/08 05:21

Не понял, что за директория /override/… И что значит «выключить ССС для JavaScript», где и как это сделать?

За ранее спасибо!

Игорь, 2013/08/13 12:15

На 1.4.10 проделал, не работает слайдер цены и веса в фильтрах, версия jquery яндекса/гугла отличается от той, что в престе. Думаю может еще что-то где-то не работать.

Иван, 2013/11/26 01:15

Как вернуть все обратно??

Ваш комментарий. вики-синтаксис разрешён:
GXRVA
 
zagruzka-jquery-s-serverov-google-ili-yandex.txt · Последние изменения: 2015/12/27 16:22 (внешнее изменение)