|
274 / 178 / 30
Регистрация: 16.03.2017
Сообщений: 1,631
|
|
Кэширование картинок11.09.2017, 22:21. Показов 1686. Ответов 7
Метки нет (Все метки)
Добрый день, посоветуйте поход, плииииз.
Пишу "генератор картинок" на основе URL. ("информеры" - технология похожая на капчу, "счетчики посещений" или "курсов валют") формат PNG - поэтому не "сохраняя в файл перед раздачей" (похоже) не возможно (очень важен размер и альфа-слой). Картинки маленькие (0.5-1Кб), но сложные (текст, графика, альфа-слой). Их много вариантов, но возможен частый повторный запрос в течении 2х-3х дней. Хочу сохранить последние несколько тысяч файлов на случай повторного запроса (явная экономия процессора). Но и не миллионы - во первых не нужно так долго хранить, а во вторых папки будут "перегреваться". Вопрос: как кешировать их? (я новичок в спринге, поэтому не ругайте за глупые предложения) Создать синглтон с таблицей ссылка-файл? как узнать что пора удалять как "устаревшую" и превысившую максимальное количество? Создать базу? как организовать "цикличность"? Если без базы, то что делать в случае перезагрузки сервера? Есть какой-то стандартный механизм/подход/библиотека? Переложить это на nginx? (тогда теряю контроль над "уровнями доступа" - не критично, но желательно)
0
|
|
| 11.09.2017, 22:21 | |
|
Ответы с готовыми решениями:
7
Как запретить кэширование данных броузером? Кэширование картинок Кэширование картинок |
|
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
|
|||
| 11.09.2017, 23:10 | |||
|
1
|
|||
|
274 / 178 / 30
Регистрация: 16.03.2017
Сообщений: 1,631
|
|||
| 11.09.2017, 23:59 [ТС] | |||
|
А во вторых должно сэкономить процессор(слабый хостинг)! сгенерил, сохранил в файлик, файлик отдал. Картинка сложная, а запрашивать ее могут до 20-200 раз за 2 дня. И картинок может быть до тысячи в час.
0
|
|||
|
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
|
||
| 12.09.2017, 08:26 | ||
|
andyj, вы похоже не совсем понимаете что говорите. Вы отдаете клиенту стрим байтов. Что там внутри у этого стрима клиенту все равно.
0
|
||
|
274 / 178 / 30
Регистрация: 16.03.2017
Сообщений: 1,631
|
||
| 12.09.2017, 15:56 [ТС] | ||
|
1)Нарисовать на канвасе с учетом прозрачности картинку (до сотни элементов - квадраты, текстовые записи, сложные фигуры из линий и полигонов) 2) сохранить картинку на диск 3) (кэширование) запомнить где-то в памяти куда положил 4) отдать файл 5) (кэширование) удалить старые файлы или если кэш уже больше 10-100тыс. картинок повтор: 1) (кэширование) найти куда положил 2) отдать файл экономия на лицо... особенно на сотне повторных запросов одной картинки
0
|
||
|
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
|
|
| 12.09.2017, 20:39 | |
|
andyj, надо делать так
1. Приходит запрос. Смотрим есть ли в кеше что-нибудь по этому запросу (предположим что нет) 2. Генерация картинки 3. Создание кеша для этого запроса и этой картинки 4. Отдача стрима или байтов картинки клиенту Все....никаких файлов и прочей мути которую вы написали. Если деньги есть, можно подключить CDN и вообще не о чем не париться...
0
|
|
|
274 / 178 / 30
Регистрация: 16.03.2017
Сообщений: 1,631
|
||
| 12.09.2017, 20:45 [ТС] | ||
|
Гуглил ImageIO.getImageWritersByFormatName("PNG ") - что-то по поводу "не поддерживает PNG-кодек" а это ImageIO.write(bi, "PNG", new File("c:\\yourImageName.PNG")) вполне работает... p.s. я новичок и мне пока не понятно как манипулировать потоками на таком уровне... но примерно представляю как манипулировать файлами.
0
|
||
|
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
|
|||
| 12.09.2017, 21:02 | |||
|
0
|
|||
| 12.09.2017, 21:02 | |
|
Помогаю со студенческими работами здесь
8
Кэширование картинок, как сделать, чтобы они грузились только один раз, а то они грузятся заново для каждой страницы? Создание массива картинок, добавление их во фрейм!(с возможностью переключения картинок кнопкой) перелистывание картинок (при неограниченном кол-ве картинок), используя пикчербоксы на C# Скачивание картинок с сайта и удаление этих же скаченных картинок Кэширование Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога
Финальные проекты на Си и на C++:
hello-sdl3-c. zip
hello-sdl3-cpp. zip
Результат:
|
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога
MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
|
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд.
Даже если у вас. . .
|
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает
монорепозиторий в котором находятся все исходники.
При создании нового решения, мы просто добавляем нужные проекты
и имеем. . .
|
|
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение:
В этой книге («Подход, основанный на вариантах использования») Ивар утверждает,
что архитектура программного обеспечения — это
структуры,. . .
|
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога
Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
|
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip
На первой гифке отладочные линии отключены, а на второй включены:. . .
|
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем.
. . .
|