Лучшая файловая структура для хранения 1000-х фотографий (в различных размерах)

Большая часть URL shorteners работает как это - все запросы, кто не запрашивает CSS / или другие статические файлы направляются к сценарию, который найденный соответствующим реальным URL от короткого идентификатора URL.

Затем существует 2 пути: a) Отправка HTTP-заголовка, который приказывает, чтобы браузер перенаправил. Наиболее популярным выбором являются 302 Найденных. Согласно спецификациям HTTP, его временному перенаправлению, но большей части реализации браузеров, что как постоянное перенаправление. Лучшим выбором являются 301 Перемещенный постоянно. b) Отправка документа HTML, с Метатегом, который говорит что браузер для перенаправления. Главным образом это - плохая идея, потому что все перенаправления будут временными, и действительный документ HTML является большим количеством bandwith, использующим, чем простой HTTP-заголовок. И корректный путь состоит в том, чтобы сделать такие вещи в протоколе, не уровень содержания.

Если Вы хотите видеть, как определенные работы услуг по сокращению URL, можно использовать Firebug (https://addons.mozilla.org/en-US/firefox/addon/1843) для наблюдения всех запросов и ответов с HTTP-заголовками.

В апаче можно использовать mod_rewrite, для перезаписи URL, в IIS - http://www.isapirewrite.com/ (proabaly существует лучшее решение, но я больше не активный пользователь IIS).

3
задан 21 July 2010 в 02:01
1 ответ

Вы могли бы хотеть попробовать хеширование md5 изображения, поскольку оно загружается, и затем хранение их в структуре каталогов как этот ниже. Принятие 3 изображений, которые хешируют к:

  1. 2b00042f7481c7b056c4b410d28f33cf
  2. 84bdbf7c4d48e16642af4c317df428c2
  3. 7b2a7edc6e86224d6ba0f97b717c80ed

И структура папок, которая похожа на это:

/images/orig/2/2b/2b0/2b00042f7481c7b056c4b410d28f33cf.jpg
/images/orig/8/84/84b/84bdbf7c4d48e16642af4c317df428c2.jpg
/images/orig/7/7b/7b2/7b2a7edc6e86224d6ba0f97b717c80ed.jpg

/images/large/2/2b/2b0/2b00042f7481c7b056c4b410d28f33cf.jpg
/images/large/8/84/84b/84bdbf7c4d48e16642af4c317df428c2.jpg
/images/large/7/7b/7b2/7b2a7edc6e86224d6ba0f97b717c80ed.jpg

/images/small/2/2b/2b0/2b00042f7481c7b056c4b410d28f33cf.jpg
/images/small/8/84/84b/84bdbf7c4d48e16642af4c317df428c2.jpg
/images/small/7/7b/7b2/7b2a7edc6e86224d6ba0f97b717c80ed.jpg

Можно сделать столько уровней после вышеупомянутого шаблона, сколько Вы хотите сохранить размеры каталога управляемыми. Также, если Вы предпочитаете, можно использовать некоторый идентификатор пользователя, чтобы определить изображения и все еще использовать подобную структуру, например, принимающий идентификатор пользователя 14: (/images/orig/0/00/0014/0014.jpg)

Можно сохранить пользователя-> данные хеша изображения в базе данных при хранении изображений в файловой системе. Независимо от того, что может быть возможно сохранить изображения в базе данных, существуют причины, которые Вы не можете хотеть делать так. Хранение их в файловой системе делает их намного легче переместиться, сказать CDN, или в облако, когда Вы растете. Это также позволяет Вам помещать каталоги на другой диск для увеличения производительности чтения, если это - вещь.

То, что Вы хешируете исходное изображение к md5, означает, что, если 30 человек загружают то же самое изображение, Вы только сохраните одну копию (во всех размерах) того изображения в Вашей файловой системе вместо 30 копий.

4
ответ дан 3 December 2019 в 06:20

Теги

Похожие вопросы