- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Что делать, если ваша email-рассылка попала в спам
10 распространенных причин и решений
Екатерина Ткаченко
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
alivar, настройки не помогли...
Щас перепрочел начало топика и немного не понял. Как связаны картинки и запросы в базу. Картинки на ФС лежат или в базе?
Картинки на ФС лежат или в базе?
интересно, если картинки лежат в базе - то это вообще, что-то на грани адекватности 🍿
а ТС - совет: настройте кеширование по нужным location ~ в nginx'е вот и решите свою проблему 🚬
интересно, если картинки лежат в базе - то это вообще, что-то на грани адекватности
бывает и такое, но чаше примерно вот такое -
http://forum.site.ru/download/file.php?avatar=77.jpg или ?id=777&mode=view (вложение фотки)
даже в этом случае лучше избавиться от лишних дерганий базы и пхп вообще, прикрутив кеширование хотя бы на 5 мин... nginx очень быстро раздаст подобное через кипаливы, так что поддерживаю на все 100
интересно, если картинки лежат в базе - то это вообще, что-то на грани адекватности 🍿
Ниче.. я как то видел и тексты сайта хранили в BLOB'e. Так и не понял зачем...
вот функции запросов этих картинок в virtuemart
classes/
global $mosConfig_live_site, $mosConfig_absolute_path;
require_once( CLASSPATH . 'imageTools.class.php');
$border="";
if( strpos( $args, "border=" )===false ) {
$border = 'border="0"';
}
$height = $width = 0;
if ($image != "") {
// URL
if( substr( $image, 0, 4) == "http" ) {
$url = $image;
}
// local image file
else {
if(PSHOP_IMG_RESIZE_ENABLE == '1' && $resize==1) {
$url = $mosConfig_live_site."/components/com_virtuemart/show_image_in_imgtag.php?filename=".urlencode($image)."&newxsize=".PSHOP_IMG_WIDTH."&newysize=".PSHOP_IMG_HEIGHT."&fileout=";
if( !strpos( $args, "height=" )) {
$arr = @getimagesize( vmImageTools::getresizedfilename( $image, $path_appendix, '', $thumb_height, $thumb_width ) );
$width = $arr[0]; $height = $arr[1];
}
}
else {
$url = IMAGEURL.$path_appendix.'/'.$image;
$using_resized_image = false;
if( $resize ) {
$image = vmImageTools::getresizedfilename( $image, $path_appendix, '', $thumb_height, $thumb_width );
if( file_exists($image)) {
$using_resized_image = true;
}
}
if( $resize && ! $using_resized_image) {
if( $height < $width ) {
$width = @round($width / ($height / PSHOP_IMG_HEIGHT));
$height = PSHOP_IMG_HEIGHT;
} else {
$height = @round($height / ($width / PSHOP_IMG_WIDTH ));
$width = PSHOP_IMG_WIDTH;
}
}
if( file_exists($image)) {
$url = str_replace( $mosConfig_absolute_path, $mosConfig_live_site, $image );
} elseif( file_exists($mosConfig_absolute_path.'/'.$image)) {
$url = $mosConfig_live_site.'/'.$image;
}
$url = str_replace('//', '/', $url );
$url = str_replace(':/', '://', $url );
if( !strpos( $args, "height=" ) ) {
$f = str_replace( IMAGEURL, IMAGEPATH, $url );
if ( file_exists($f) ) {
$arr = getimagesize( $f );
$width = $arr[0]; $height = $arr[1];
} else {
$width = 100; $height = 100;
}
}
}
$url = str_replace( basename( $url ), $GLOBALS['VM_LANG']->convert(basename($url)), $url );
}
}
else {
$url = VM_THEMEURL.'images/'.NO_IMAGE;
}
return vmCommonHTML::imageTag( $url, '', '', $height, $width, '', '', $args.' '.$border );
}
и html/
if( $db_browse->f("product_thumb_image") ) {
$product_thumb_image = $db_browse->f("product_thumb_image");
}
else {
if( $product_parent_id != 0 ) {
$product_thumb_image = $dbp->f("product_thumb_image"); // Use product_thumb_image from Parent Product
}
else {
$product_thumb_image = 0;
}
}
if( $product_thumb_image ) {
if( substr( $product_thumb_image, 0, 4) != "http" ) {
if(PSHOP_IMG_RESIZE_ENABLE == '1') {
$product_thumb_image = $mosConfig_live_site."/components/com_virtuemart/show_image_in_imgtag.php?filename=".urlencode($product_thumb_image)."&newxsize=".PSHOP_IMG_WIDTH."&newysize=".PSHOP_IMG_HEIGHT."&fileout=";
}
elseif( !file_exists( IMAGEPATH."product/".$product_thumb_image )) {
$product_thumb_image = VM_THEMEURL.'images/'.NO_IMAGE;
}
}
}
else {
$product_thumb_image = VM_THEMEURL.'images/'.NO_IMAGE;
}
// Get the full image path, or URL if set, or the no_image
if( $db_browse->f("product_full_image") ) {
$product_full_image = $db_browse->f("product_full_image");
} elseif( $product_parent_id != 0 ) {
$product_full_image = $dbp->f("product_full_image"); // Use product_full_image from Parent Product
}
else {
$product_full_image = VM_THEMEURL . 'images/' . NO_IMAGE;
// Get the size information for the no_image
if( file_exists( VM_THEMEPATH . 'images/' . NO_IMAGE ) ) {
$full_image_info = getimagesize( VM_THEMEPATH . 'images/' . NO_IMAGE );
$full_image_width = $full_image_info[0]+40;
$full_image_height = $full_image_info[1]+40;
}
}
// Get image size information and add the full URL
if( substr( $product_full_image, 0, 4) != 'http' ) {
// This is a local image
if( file_exists( IMAGEPATH . 'product/' . $product_full_image ) ) {
$full_image_info = getimagesize( IMAGEPATH . 'product/' . $product_full_image );
$full_image_width = $full_image_info[0]+40;
$full_image_height = $full_image_info[1]+40;
}
$product_full_image = IMAGEURL . 'product/' . $product_full_image;
} elseif( !isset( $full_image_width ) || !isset( $full_image_height ) ) {
// This is a URL image
$full_image_info = @getimagesize( $product_full_image );
$full_image_width = $full_image_info[0]+40;
$full_image_height = $full_image_info[1]+40;
}
ещё подскажите пожалуйста, кто знает, как правильно прописать загрузку этих картинок через watermark.php
(RewriteRule ^(.*)$ /watermark/watermark.php [T=application/x-httpd-php,L,QSA] )
пробую писать в nginx
rewrite ^(.*components/com_virtuemart/shop_image/product.*\.jpg)$ /watermark/watermark.php?$1 last;
или
rewrite ^/components/com_virtuemart/shop_image/product/(.*)\.jpg /watermark/watermark.php?$request_filename;
вставлял его в главный location, никаких признаков жизни...
пытается заработать в статике location ~* ^.+\.(gif|svg|js|css|mp3|ogg|mpe?g|avi|zip|gz|bz2?|rar|swf)$ {
хотя бы вообще не грузит .jpg, просто висит загрузка картинки, но почему через watermark не проходит?
спасибо всем за подсказки 🍻
nginx вроде решил пока так
proxy_pass http://127.0.0.1:81;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
ещё подскажите пожалуйста, кто знает, как правильно прописать загрузку этих картинок через watermark.php
в вашем случае лучше (да и вообще правильнее так всегда, в смысле в меру возможностей, в случае с nginx) использовать location+try_files, а не реврайты. тут подойдет хорошо именованный location, в данном случае (туда же кеширование прикрутить можно и нужно)
как-то так...
r0mik спасибо за идею, очень хочу попробовать с кешем...
Помогите донастроить nginx+apache (mod_php+xcache)
страница грузится быстро, а вот php запросы в базу и обратный вывод картинок долго тупит...
текст и шаблон загрузился, после по очереди появляются картинки, как-будто нельзя в несколько потоков их грузить???
конечно может дело в Joomla+Virtuemart, но при пользовании apache+fcgi или nginx+fcgi, нигде такого тормоза не наблюдал...
Я такое наблюдал, после:
чтобы nginx полностью все брал от апача.
и Мне тоже это не помогло ;)
alivar, настройки не помогли...
nginx работает как прокси, и в текущей cdzprt вывод будет тормозить...
Советую всё же сделать так, что бы на странице доступ к картинкам был напрямую, а не через php+база данных, тогда в nginx'е можно будет вписать:
location ~* ^.+.(jpg|jpeg|gif|css|png|js|ico)$ {root /var/www/site.ru;
access_log off;
expires 30d;
}