В настоящее время я обслуживаю все изображения в своем приложении из CDN. Изображения находятся в папке app/assets/images
в моем приложении rails.Обслуживание статических изображений больших изображений
И после того, как приложение предварительно скомпилировано, все активы загружаются в CDN, и он отлично работает.
Однако существует десяток больших файлов изображений, которые почти никогда не меняются, в основном для пользователей, пока они не вошли в систему, как часть карусели или что-то еще.
Так что, если появится новая версия приложения, эти статические изображения будут снова загружены, и пользователям придется их повторно загружать, но они никогда не меняются, поэтому они являются излишними и для больших размеров это не бессмысленно.
Моя идея состояла в том, чтобы поместить изображения в vendor/assets/images
и загрузить их прямо в мое приложение без суффикса/хэша, сгенерированного приложением. Пример: если у вас есть изображение в вашем приложении с именем 2.jpg
, после того, как активы были предварительно скомпилированы, он мог быть сохранен в CDN как 2-49d87927b61510021a3cd0a895502625.jpg
или что-то в этом роде.
Так что я бы теперь добавляют это выше изображение:
= image_tag('2.jpg', alt: '')
Но так как у меня есть эта линия в моем assets.rb
инициализаторе:
Rails.application.config.assets.precompile += %w(*.png *.jpg *.jpeg *.gif)
Изображение 2.jpg
будет прекомпилирована с хэш по производству Окружающая среда.
Итак, как я могу использовать это изображение, которое не было предварительно скомпилировано с помощью hash on prod, но оставалось прежним?
Если я ставлю:
= image_tag('2.jpg', alt: '')
Оно должно отображаться как <image src='http://CDN_URL/assets/2.jpg' />
, а не <image src='CND_URL/assets/2-23123dasdasdsadsasad21312.jpg' />
, потому что это один находится под vendor/assets/images
я все еще хочу, чтобы мои регулярные изображения app/assets/images
быть вручено хэша. Это возможно? и как?
Update:
В моей среде разработки я не сервер статических активов. Просто регулярная версия конфигурации. Но я бы предпочел решение, которое работает для обеих сред (DEV и PROD).
Update II:
Похоже %img{src: 'assets/2.jpg'}
загружает файл из vendor/assets/images
, который прекрасно.
Еще другая проблема сохраняется, когда я перекомпилировать активы и когда я Rails.application.config.assets.precompile += %w(*.png *.jpg *.jpeg *.gif)
в assets.rb
инициализаторе изображения с хэшем т.е. 2-32131dasdaeasee12eda.jpg
Если удалить Rails.application.config.assets.precompile += %w(*.png *.jpg *.jpeg *.gif)
от конфигурации, нет изображений 2.jpg
не копируются в public/assets
, и поэтому не копируются в CDN.
Почему бы не использовать ''? для ваших статических изображений. image_tag всегда будет добавлять маску md5 (или все, что вы используете) – Avdept
@Avdept '% img {src: 'images/2.png'}' даже не работает на localhost. В разработке, где я не сервер статические активы –
не должно быть, как '/ images/2.png''? – Avdept