Ввод при принятии решения: хостинг файлов с amazon s3 или аналогичным и php


Я ценю ваши комментарии, которые помогут мне определиться со следующим.

Мои требования:

  • У меня есть сайт, размещенный на общем сервере, и я собираюсь предоставлять контент своим пользователям. Около 60 ГБ контента (около 2000 файлов по 30 Мб каждый. Пользователи будут иметь доступ только к 20 файлам одновременно), я рассчитываю ежемесячное использование пропускной способности около 100 ГБ.

  • Как только пользователь зарегистрируется для получения контента, ссылки будут доступны для загрузки пользователем. Но мне нужны ссылки срок действия истекает через 7 дней, с возможностью увеличения срока действия.

  • Я думаю, что дисковое пространство и пропускная способность требуют такой службы, как Amazon S3 или облачные файлы Rackspace (или есть альтернатива? )

  • Чтобы управлять истечением срока действия, я планирую каким-то образом получить ссылки, срок действия которых истекает (я думаю, что у S3 есть эта функция, а не пространство для хранения) ИЛИ контролируйте дату истечения срока действия в моей базе данных и выполняйте пакетный процесс, который будет ежедневно переименовывать все 200 файлов в облаке и на моя база данных (в случае, если пользователь скопировал прямую ссылку, она не будет работать на следующий день, только на моей веб-странице будут обновленные ссылки). PHP используется для программирования.

Так что ты думаешь? Облачный хостинг файлов - это правильный путь? Какой? Имеет ли смысл управлять ссылками таким образом или это слишком сложно сделать с помощью программирования (отправлять команды на облачный сервер...)

РЕДАКТИРОВАТЬ: Некоторые принимающие компании имеют неограниченное пространство и пропускную способность в своих общих планах.. Я спросил их обслуживающий персонал, и они сказали, что действительно соблюдают "неограниченную" сделку. Так что 100 ГБ передачи в месяц - это нормально, единственное, на что стоит обратить внимание, - это загрузка процессора. Так что переход на общий хостинг - это еще одна альтернатива на выбор..

ПОСЛЕДУЮЩИЕ ДЕЙСТВИЯ: Поэтому, углубившись в это, я обнаружил, что в TOS Неограниченных планов говорится, что не разрешается использовать пространство в основном для размещения мультимедийных файлов. Поэтому я решил использовать Amazon s3 и решение, предоставленное Томом Андерсеном.

Спасибо за вход.

Author: Sunjen, 2012-02-03

3 answers

Вам не нужно переименовывать файлы на S3 каждый день. Просто сделайте их закрытыми (по умолчанию) и раздайте ограниченные по времени URL-адреса на день или неделю всем, кто авторизован.

Я бы подумал о том, чтобы ссылки действовали только в течение 20 минут, так что пользователю придется повторно войти в систему, чтобы повторно загрузить файлы. Тогда они даже не смогут поделиться ссылками, которые они получают от вас.

 1
Author: Tom Andersen, 2012-02-03 20:30:11

Лично я не думаю, что для этого вам обязательно нужно переходить на облачное решение. Это может быть немного дорого. Вместо этого вы могли бы просто получить выделенный сервер. Один поставщик, который приходит на ум, предоставляет пропускную способность 3000 ГБ в месяц на некоторых из своих планов самого низкого уровня. Это на восходящей линии связи 10 Мбит/с; вы можете перейти на скорость 100 Мбит/с за 10 долларов в месяц или 1 Гбит за 20 долларов в месяц. Я не буду называть никаких имен, но вы можете поискать выделенные серверы и, возможно, найти тот, который вам нравится.

Что касается по истечении срока действия файлов просто реализуйте это в PHP, поддерживаемом базой данных. Вам не придется перемещать файлы, хранить все файлы в каталоге, недоступном из Интернета, и использовать PHP-скрипт, чтобы определить, действительна ли ссылка, и если да, то прочитать содержимое файла и передать их в браузер. Если ссылка недействительна, вместо этого вы можете отобразить сообщение об ошибке. Это довольно простая концепция, и я думаю, что есть много заранее написанных сценариев, которые делают это доступным, но в зависимости от вашего потребности, это не так уж сложно сделать самому.

Облачный хостинг имеет преимущества, но сейчас я думаю, что это дорого, и если вы не пытаетесь распределить нагрузку географически или планируете поддерживать тысячи одновременных пользователей и нуждаетесь в гибкости облака, вы могли бы использовать выделенный сервер вместо этого.

Надеюсь, это поможет.

 2
Author: drew010, 2012-02-03 05:51:16

Я не могу говорить за S3, но я использую облачные файлы и серверы Rackspace.

Хорошо, что вы не платите за входящую пропускную способность, поэтому загрузка очень дешевая.

Я бы сделал это так:

  1. Загрузите все необходимые файлы в "частный" контейнер
  2. Создайте общедоступный контейнер с включенной CDN
  3. Это даст вам специальный URL-адрес, например http://c3214146.r65.ce3.rackcdn.com
  4. Создайте свою собственную DNS-запись CNAME для вашего домена, указывающую на это, например: http://cdn.yourdomain.com
  5. Когда пользователь запрашивает файл, используйте Операцию КОПИРОВАНИЯ api с длинным случайным именем для копирования на стороне сервера из частного контейнера в общедоступный контейнер.
  6. Сохраните имя файла в базе данных mysql для вашего приложения
  7. Как только срок действия файла истечет, используйте Операцию УДАЛЕНИЯ api, затем Операцию ОЧИСТКИ api, чтобы удалить его из CDN.. наконец, удалите запись из mysql таблица.

С помощью команды ОЧИСТКИ.. Я слышал, что он не работает в 100 % случаев, и он может оставить файл на дополнительный день.. также в документах говорится, что он используется только для экстренных случаев.

Редактировать: Я только что слышал, что существует ограничение на 25 чисток в день.

Однако лично я только что использовал удаление объектов и обнаружил, что сразу же удалил CDN. Таким образом, в худшем случае файл будет по-прежнему доступен на некоторых узлах CDN в течение 24 через несколько часов после удаления.

Изменить: Вы можете изменить TTL (время кэширования) на узлах CDN.. по умолчанию 72 часа, поэтому может потребоваться установить его на что-то меньшее.. но не настолько низко, чтобы вы потеряли преимущество CDN.

Преимущества, которые я нахожу в CDN, заключаются в следующем:

  1. Он выводит контент прямо конечным пользователям вдали от серверов США и обеспечивает для них сверхбыстрое время загрузки
  2. Если у вас есть супер популярный файл.. это не приведет к удалению вашего сайта, когда 1000 человек начнут пытаясь загрузить его.. так как все они получали копии, выталкиваемые из любого узла CDN, к которому они были ближе всего.
 2
Author: matiu, 2017-05-23 11:48:47