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

[Решено] Нужно увеличить скорость загрузки. Перенести все image на поддомен


Recommended Posts

Вот такая повторяющаяся ошибка на пол экрана Notice: Use of undefined constant HTTP_IMAGE - assumed 'HTTP_IMAGE' in /path/www/catalog/model/tool/image.php on line 60

 

Строка 60 это и есть внесенные вышеописанные вами изменения в этот файл image.php

 

Есть ли какой-либо способ для версии движка 1.5.5.1.2 вынести папку с картинками в поддомен

Надіслати
Поділитися на інших сайтах


  • 6 months later...

Есть ли какой-либо способ для версии движка 1.5.5.1.2 вынести папку с картинками в поддомен

 есть, для 1.5.5.1 использовать этот фикс для vqmod

у меня все получилось

 

эффект правда ноль если использовать на своем хостинге поддомен

fix_image_subdomain.xml

Надіслати
Поділитися на інших сайтах


  • 4 weeks later...

Есть ли какой-либо способ для версии движка 1.5.5.1.2 вынести папку с картинками в поддомен

Недавно столкнулся с такой проблемой. Способ есть. Пока багов не обнаружил. Спасибо markimax за подсказку где ковырять.

Я сделал следующее:

Как в старых версиях добавил в оба config.php в корне и в папке /admin/ строки: 

 

// HTTP

define('HTTP_IMAGE', 'http://cdn.domain.dev/');

// HTTPS

define('HTTPS_IMAGE', 'http://cdn.domain.dev/');

Указал новый путь к картинкам (все тот же config.php)

// DIR

define('DIR_IMAGE', '\var\www\cdn.domain.dev\image\');

(После этого ошибка NoticeUse of undefined constant HTTP_IMAGE - assumed 'HTTP_IMAGE' in /path/www/catalog/model/tool/image.php on line 60)  должна пропасть.

 

Ну и далее ищем файлы image.php

/admin/model/tool/

и

/catalog/model/tool/

 

И в самом конце меняем строчки

if (isset($this->request->server['HTTPS']) && (($this->request->server['HTTPS'] == 'on') || ($this->request->server['HTTPS'] == '1'))) {
return $this->config->get('config_ssl') . 'image/' . $new_url;
}
else {
return $this->config->get('config_url') . 'image/' . $new_url;
}

на:

if (isset($this->request->server['HTTPS']) && (($this->request->server['HTTPS'] == 'on') || ($this->request->server['HTTPS'] == '1'))) {
            return HTTPS_IMAGE . 'image/' . $new_image;
        } else {
            return HTTP_IMAGE . 'image/' . $new_image;
        }

После этого у меня все заработало =)

А то уж думал платный модуль брать придется =)

Надіслати
Поділитися на інших сайтах

 есть, для 1.5.5.1 использовать этот фикс для vqmod

у меня все получилось

 

эффект правда ноль если использовать на своем хостинге поддомен

 

Как раз для таких тестов и решил заморочиться с этим. 

Натолкнула эта статья http://habrahabr.ru/post/137239/

 

А именно пункт 5

 

 

согласно спецификации HTTP/1.1 на браузеры накладываются ограничения на количество одновременно загружаемых компонентов сайта, а именно не более 2-х компонентов с одного хоста.

 

 

Поэтому если на Вашем сайте много графики, то ее лучше вынести на отдельный поддомен или поддомены. Для Вас это будет один и тот же сервер, а для браузера – разные.

 

Вот и решил проверить насколько это актуально =)

 

Если у вас есть более актуальная информация об этом или результаты тестов - поделитесь.

Надіслати
Поділитися на інших сайтах

Смысл имеет - по крайней мере года три назад подобным заморачивался, результат ощутим ;)

 

Современные браузеры поддерживают одновременную потоковую загрузку 4-6 элементов. Только несколько другим путем пошел - не стал создавать поддомены, вместо этого сделал алиасы к сайту в панели управления хостингом (вида static1.site.ru, static2.site.ru и тд) - в итоге физически ничего никуда переносить не нужно.

 

Для браузера эти адреса разные, поэтому подгрузка в паралллельном режиме идет на ура. А фактически - адрес один и тот же, этакий CDN для бедных в итоге :-D

 

Дальше внес изменения, примерно как в постах выше - только еще css правил, там пути вручную раскидал между несколькими алиасами + в header.tpl для подгрузки части js и css

 

PS: Оптимальное количество таких алиасов - 3-6шт, включая сам домен, в зависимости от типа данных и распиливания нагрузки

Надіслати
Поділитися на інших сайтах

  • 7 months later...

А можно ли в:

protected function getImageUrl($new_image) {
$parts = explode('/', $new_image);
$new_url = implode('/', array_map('rawurlencode', $parts));
if (isset($this->request->server['HTTPS']) && (($this->request->server['HTTPS'] == 'on') || ($this->request->server['HTTPS'] == '1'))) {
return $this->config->get('config_ssl') . 'image/' . $new_url;
}
else {
return $this->config->get('config_url') . 'image/' . $new_url;
}
}

сделать формирование относительной ссылки, без привязки http/https? . Потому как по https картинки все равно генерируются вида http 

Змінено користувачем Sunjahman
Надіслати
Поділитися на інших сайтах


Можно. Попробуйте вырезать 
 

$this->config->get('config_url') .

и 
 

$this->config->get('config_ssl') . 

у "image/" добавить вначале слеш "/image/"

Змінено користувачем Гість
Надіслати
Поділитися на інших сайтах

Afwollis, Константы выставлял, инструкций масса на эту тему, но все равно картинки подгружаются по http. ver/(1.5.5.1.2). Dragon, Если в

$this->config->get('config_url')

url заменить на ssl -  все картинки будут грузиться по https (тогда и смысл условия функции теряется). Проблема в том, что if не срабатывает, почему так и не смог разобраться, думал, что заменить пути к картинкам на относительные - самое простое решение. При добавлении слэша перед image, он просто дублируется в пути к картинке (site.ru//image/......)

Змінено користувачем Sunjahman
Надіслати
Поділитися на інших сайтах


Вы меня не правильно поняли. Надо не заменять, а вырезать И добавить слэш. На тестовом сайте попробовал - url'ы у картинок стали "/image/....." то есть без указания протокола и домена. 

if (isset($this->request->server['HTTPS']) && (($this->request->server['HTTPS'] == 'on') || ($this->request->server['HTTPS'] == '1'))) {
return '/image/' . $new_url;
}
else {
return '/image/' . $new_url;
}

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

return 'https://domain.dev/image/' . $new_url; 

А почему конфиги не срабатывают? Вы там дописали строки которые были до 1.5.5.1.2 и их почему-то потерли в 1.5.5.1.2 ?

Я выносил картинки на cdn поддомен и работало нормально, с https думаю тоже работать должно.

Змінено користувачем Гість
Надіслати
Поділитися на інших сайтах

Dragon, спасибо, все получилось (убрал условие, добавил return '/image/' . $new_url)

P.S. Строки дописывал, и в конфигах, менял, плюнул, не стал разбираться. А Данное решение мне кажется простым и действенным. Смысл в этих условиях!

Надіслати
Поділитися на інших сайтах


  • 5 weeks later...

Вернул все как было. Потому как нужно было переделывать контроллеры других модулей формирования ссылок(не все сайты принимают относительные пути) Так что фактически проблема осталась. Буду разбираться, как появится немного времени.

Надіслати
Поділитися на інших сайтах


  • 4 years later...

У меня на ocStore 2.3.0.2 что-то не совсем эта фишка получается. Сайт на домене site1.com, картинки подключаем через site2.com, оба на одном хостинге.

В админке урл картинки поменялся, а во фронтенде урл вылазит вот такой:

https://site1.com/site2.com/image/cache/catalog/telefon-260x307.jpg


site1.com никак не убирается почему-то. 

 

В файле каталог/модел/тул/image.php :

return $this->config->get('config_ssl') . 'image/' . $new_image;


ставил разные варианты:
 

return 'https://site2.com/image/' . $new_image;

и

return HTTPS_IMAGE . $new_image;

Для админки это работает, для фронтенда ничего не работает, урл не изменяется вообще.


В чем проблема может быть, почему site1.com упорно стоит в начале урл?

Надіслати
Поділитися на інших сайтах


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз

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

Important Information

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