Всем привет! Сайт sfera.by на OcStore 1.5.5.1.2 Появилась проблема с качеством изображений товаров в категориях и модулях (везде). Изображения на сервере хранятся в хорошем качестве, а в кэше в ужасном. Пробовал править файл catalog/model/tool/image.php, но не помогло. Проблема появилась при переезде на другой хостинг, переносили сайт техподдержка хостинга. Говорят, что ничего не меняли в файлах.
Смахивает на проблему с GD. То ли версия какая-то кривая, то ли настройки. А у вас никаких модулей не установлено для обработки изображений?
Нет, я за последний год вообще никаких модулей не устанавливал. Меня полностью устраивала работа сайта. Был отключенный модуль водяного знака, но я и его вчера удалил на всякий случай. Кэш почистил, но проблема осталась. Сделал тестовый магазин на поддомене (OcStore 2.3). Закинул туда такое же изображение. Потеря качества есть, но не такая большая как на основном магазине: http://test.sfera.by/index.php?route=product/product&product_id=30
Полтергейст просто. Там версии php одинаковые? И у этих фоток немного размер отличается. Может, вы выставили на основном размер больше оригинала?
PHP одинаковые (5.6). Я на том же хостинге сделал поддомен ничего не меняя. Выставил в админке изображение до одинаковых размеров, ничего не поменялось. --- Добавлено, 28 мар 2019 --- Проделал следующее: На оба сайта загрузил одно и то же изображение размером 500х500. Выставил размер всплывающего изображения 500х500 и там и там. В итоге в тестовом магазине размер изображения как положено 500х500, а в основном 550х550. Получается, что его что-то растягивает на 10%. Сделал то же самое с другими размерами исходных изображений - результат тот же.
Дело не в шаблоне. Магазин три года работает на этом шаблоне, а изображения стали плохого качества около месяца назад.
Тем не менее, именно шаблон является отличием между двумя версиями. Я не говорю, что дело исключительно в шаблоне, но именно что-то в нём могло так отреагировать на переезд. В шаблоне нет отдельных настроек размера изображения?
Только что всё просмотрел. Только настройки слайдера и баннера. У меня что-то сильно забит .htaccess всяким барахлом. Хотя я его тоже сто лет не менял. Может там что-то лишнее удалить надо? Код: #dnwr_host cdn1.opencart.im cdn2.opencart.im Options +FollowSymlinks # Prevent Directoy listing Options All -Indexes # Prevent Direct Access to files <FilesMatch "\.(tpl|ini|log)"> Order deny,allow Deny from all </FilesMatch> # SEO URL Settings # If your opencart installation does not run on the main web folder make sure you folder it does run in ie. / becomes /shop/ RewriteEngine On RewriteBase / RewriteRule ^sitemap.xml$ index.php?route=feed/fast_sitemap [L] RewriteRule ^googlebase.xml$ index.php?route=feed/google_base [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_URI} !.*\.(ico|gif|jpg|jpeg|png|js|css) RewriteRule ^([^?]*) index.php?_route_=$1 [L,QSA] RewriteCond %{HTTPS} off RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} # Редирект c www на без www RewriteCond %{HTTP_HOST} ^www.sfera.by RewriteRule ^(.*)$ https://sfera.by/$1 [R=301,L] # Редирект для главной (с /index.php на /) RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\ HTTP/ RewriteRule ^index\.html$ / [R=301,L] RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/ RewriteRule ^index\.php$ / [R=301,L] # Add "gzip Encoding" to already gzipped files AddType text/css .css .cssgz AddType text/javascript .js .jsgz AddEncoding x-gzip .cssgz .jsgz # Enable Gzip into use mod_gzip.c <IfModule mod_gzip.c> mod_gzip_on Yes mod_gzip_dechunk Yes mod_gzip_item_include file \.(html?|txt|css|js|php|pl)$ mod_gzip_item_include mime ^text\.* mod_gzip_item_include mime ^application/x-javascript.* mod_gzip_item_include mime ^application/x-font-woff.* mod_gzip_item_exclude mime ^image\.* mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.* </IfModule> <IfModule mod_deflate.c> AddOutputFilterByType DEFLATE text/text text/html text/plain text/xml text/css text/javascript application/x-javascript application/javascript </IfModule> # Disable access to php ettor log file <Files php_error.log> Order allow,deny Deny from all Satisfy All </Files> # Cache-Control <IfModule mod_headers.c> Header unset Last-Modified # 120 days <FilesMatch "\.(ico|pdf|flv|jpg|jpeg|png|gif|swf|cssgz|jsgz)$"> Header set Cache-Control "max-age=7776000, public" </FilesMatch> # 120 days + Append Accept Encoding <FilesMatch "\.(css|js|cssgz|jsgz)$"> Header set Cache-Control "max-age=7776000, public" Header append Vary: Accept-Encoding </FilesMatch> # 120 days <FilesMatch "\.(xml|txt)$"> Header set Cache-Control "max-age=7776000, public, must-revalidate" </FilesMatch> # 120 days <FilesMatch "\.(html|htm|php)$"> Header set Cache-Control "max-age=7776000, private, must-revalidate" </FilesMatch> # Compatible with old browsers <FilesMatch "\.(js|css|gif|png|jpe?g|pdf|xml|oga|ogg|m4a|ogv|mp4|m4v|webm|svg|svgz|eot|ttf|otf|woff|ico|webp|appcache|manifest|htc|crx|oex|xpi|safariextz|vcf)$" > Header unset X-UA-Compatible </FilesMatch> </IfModule> # Optimization for Browser Caching FileETag MTime Size <IfModule mod_expires.c> ExpiresActive on <filesmatch ".(jpg|jpeg|gif|png|ico|css|js|cssgz|jsgz)$"> ExpiresDefault "access plus 1 year" </filesmatch> ExpiresDefault "access 7 days" ExpiresByType application/javascript "access plus 1 year" ExpiresByType text/javascript "access plus 1 year" ExpiresByType text/css "access plus 1 year" ExpiresByType text/html "access plus 7 day" ExpiresByType text/x-javascript "access 1 year" ExpiresByType image/gif "access plus 1 year" ExpiresByType image/jpeg "access plus 1 year" ExpiresByType image/png "access plus 1 year" ExpiresByType image/jpg "access plus 1 year" ExpiresByType image/x-icon "access 1 year" ExpiresByType application/x-shockwave-flash "access 1 year" </IfModule> #Compatible with old browsers <IfModule mod_setenvif.c> BrowserMatch "MSIE" force-no-vary BrowserMatch "Mozilla/4.[0-9]{2}" force-no-vary BrowserMatch ^Mozilla/4\.0[678] no-gzip BrowserMatch \bMSIE !no-gzip !gzip-only-text/html </IfModule> #max_execution_time это максимальное время работы скрипта, поставил побольше, чтобы сервер не вырубал работающий скрипт. #php_value max_execution_time 200 ### Additional Settings that may need to be enabled for some servers ### Uncomment the commands by removing the # sign in front of it. ### If you get an "Internal Server Error 500" after enabling any of the following settings, restore the # as this means your host doesn't allow that. # 1. If your cart only allows you to add one item at a time, it is possible register_globals is on. This may work to disable it: # php_flag register_globals off # 2. If your cart has magic quotes enabled, This may work to disable it: # php_flag magic_quotes_gpc Off # 3. Set max upload file size. Most hosts will limit this and not allow it to be overridden but you can try # php_value upload_max_filesize 999M # 4. set max post size. uncomment this line if you have a lot of product options or are getting errors where forms are not saving all fields # php_value post_max_size 999M # 5. set max time script can take. uncomment this line if you have a lot of product options or are getting errors where forms are not saving all fields # 6. set max time for input to be recieved. Uncomment this line if you have a lot of product options or are getting errors where forms are not saving all fields # php_value max_input_time 200 AddDefaultCharset utf-8
Ничего влияющего на качество изображений я там не вижу, но его таки надо исправить. Все редиректы должны идти до вот этих строк: Код: RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_URI} !.*\.(ico|gif|jpg|jpeg|png|js|css) RewriteRule ^([^?]*) index.php?_route_=$1 [L,QSA] Иначе они могут работать неправильно или вообще не работать. Вообще, правило простое - редиректы писать под строкой: Код: RewriteBase / Только будьте осторожны. При переносе редиректов может всплыть, что раньше они просто вообще не применялись, а когда после переноса они начнут применяться, окажется, что они неправильные. Были такие случаи. А второе - это правила, которые касаются сжатия и кеширования статики. На всех нормальных хостингах статику отдаёт nginx, а потому эти правила просто лишние.
По поводу кэша техподдержка хостинга снова не помогла. Попозже вечером начну тупо пробовать заменять каталоги и файлы с чистого OcStore.
Блин, нашёл причину. Дело было не в сайте и не в хостинге. Именно мой основной сайт (sfera.by) у меня в браузере (Chrome) открывался в масштабе 110%. Из-за этого и терялось качество изображений Приношу свои извинения за беспокойство и огромное спасибо Dotrox за участие в решении проблемы! P.S. Прошу модераторов удалить тему, т.к. в итоге она оказалась бесполезной.