Доброго времени суток обитателям форума! Опишу некритичную ситуацию, которая "мозолит" глаза: у меня на сайте магазина используются виджеты социальных сетей (ВКонтакте и Facebook). Хотя подгружаются они асинхронно с основной страницей, но иногда время загрузки занимает больше 5 секунд , так как они расположены в футере, то постоянно происходит обновление этих самих виджетов и психологически это воспринимается как легкое подтормаживание странички. Так как свежесть информации с этих соцсетей некритична, то возникла идея кешировать этот контент и обновлять время от времени, а не каждый раз. Может у кого есть идеи? Как можно реализовать с помощью используемого в opencart кеширования? Буду благодарен за наставление
Насколько я понимаю, нам нужно выполнить такие шаги: сервер предоставляет посетителю стандартное подключение виджета; на клиенте джаваскриптом виджета подгружается необходимый контент в соответствующее место на странице и отображается; мы передаем контент виджета серверу и сохраняем в кеше\сессии пользователя (если хотим сделать персонализированные виджеты); при следующих обращениях к серверу будет выводится закешированный контент (с проверкой времени жизни данных); Реализуемо ли это?
получается что именно его + со стандартной оберткой подключающих DIV'ов. Это позволит в рамках конкретного посетителя убрать ненужные обращения к соцсетям.
В src ссылку на "обработчик" кешированных виджетов - модуль или просто php файл, который будет вытаскивать данные из сессии (с передачей необходимых кукисов идентификатора сессии) пользователя или просто из глобального кеша. Я пока вижу это в теории и пытаюсь прояснить детали реализации. Главный вопрос - стоит ли с этим заморачиваться, кому-то еще это напряжно видеть или это только у меня?
помоему эта беда у всех, единственное что предлагает гугл это асинхронная загрузка когда грузится основной контент, а потом догружается виджет
У меня был случай, когда нужно было оптимизировать сайт. Все что можно было сделал, остались только скрипты комментариев вконтакте и файсбука, они были во вкладках. Смысл загружать лишние 100-200 килобайт, если пользователь может ими и не воспользоваться???. Решил проблему. Javascript подгружал и инициализировал скрипты соц. сетей только тогда, когда пользователь переходил на эти вкладки. А Вам, возможно, подойдет не кеширование, а именно - загрузка скриптов по событию. Например, подгрузите и инициализируйте(выполните) скрипт, только тогда, когда его блок станет видимым. Как это делает JQuery LazyLoad только с изображениями. P.S. Загрузка скриптов по требованию Событие OnVisible с JQuery
Такой очевидный вариант даже и в голову не пришел. Попробую с вашего подхода (событие OnVisible), если "тормоза" останутся - буду копать глубже. Загрузка скриптов по требованию звучит заманчиво, но там используется синхронный AJAX запрос.