Что значат параметры в URL картинок?

441
22 сентября 2017, 21:04

Нашёл в коде сайта ссылку:

http://domain.com/logo.jpg?version=white

Это значит, что картинки в этом проекте в базе хранятся? Если нет, то какие ещё есть варианты?

Answer 1

Каждая запрошенная URL соответствует некоторому ресурсу на стороне сервера (или его отсутствию). Ресурс может быть как статическим (файлы, в т.ч. html-страницы, изображения, документы), так и строится динамически. Сайт может быть построен как в виде набора статичных html-страниц, так и используя некоторый язык программирования на стороне сервера, в результате отдающий все тот же html-контент.

При запросе изображений ситуация не изменяется. Запрошенное изображение может быть файлом размещенным по указанному пути, а может отдаваться клиенту динамически.

Часто (но далеко не всегда) наличие get-параметров в url свидетельствует о том, что доступ осуществляется не к файлу изображения, а к php скрипту (или другому серверному коду), который возвращает контент запрашиваемого изображения. Откуда скрипт берет изображение (из файла на диске, базы, или удаленного ресурса) в данном контексте уже не важно.

Перенаправление запроса (сопоставление исходной URL logo.png?version=white) и его сопоставления конечному файлу-скрипта в простейших случаях выполняется такими способами как директивы RewriteRule для апача, либо другими механизмами маршрутизации на уровне приложения.

В то же время, отсутствие параметров не означает, что ресурс статичный. Как и наличие параметров не свидетельствует о его "динамичности". В общем говоря, вид URL вообще никак не говорит нам о том, какова природа запрашиваемого ресурса.

Динамическая генерация контента изображений может применяться для:

  • ограничения доступа к файлам
  • скрытие пути к конечному файлу
  • ресайза изображения "на лету", наложения водяных знаков и т.п.

Использование get-параметров для статичных файлов:

  • ограничения кэширования на стороне клиента (в url прибавляют метку времени а-ля logo.png?t=1233123123)
Answer 2

Ничего это не значит. Просто на сервере настроен ролутинг, который обрабатывает этот адрес с параметром и что-то (что угодно) делает дальше.

Answer 3

Часто все запросы на сервер перехватываются. Если даже идет адрес site.com/files/directory/image.png, абсолютно не факт, что на сервере существует папка files, directory и вообще картинка image.png. Вполне возможно, что всё это будет формироваться серверной стороной (например скриптом на PHP) на лету. И для каких-то целей, можно придумать какие-то параметры.

Я, например, на сайтах использую хелпер для картинок, который принимает значения высоты и ширины из адресной строки. Т.е. в html пишу

<img src="/images/300/400/imageName.png" alt="">

При этом папки images на сервере нет. Запрос перехватывается и обрабатывается контроллером фреймворка. В моем случае - ресайз и выдача картинки. Можно было бы написать так:

<img src="/images/imageName.png?w=300&h=400" alt="">

И обработать немного по другому параметры. Смысл бы не поменялся.

READ ALSO
Zend Framework 1: Как создать &ldquo;два&rdquo; декоратора Callback

Zend Framework 1: Как создать “два” декоратора Callback

Как при создание формы создать два декоратора Callback? Примерный кусок кода

251
Добавить действие в админке заказа в Woocommerce

Добавить действие в админке заказа в Woocommerce

Задача похожа вот на эту, но добавить задание нужно сюда

227
Упростить код в php

Упростить код в php

Можно ли сделать этот код более маленьким:

240
Передача переменной в модальное окно

Передача переменной в модальное окно

Здравствуйте! Есть две категории баннеры и слайдеры, и форма в виде модального окна с помощью которой мы добавляем элемент либо в одну либо...

310