Я создаю поддержку нескольких серверов для сайта загрузки файлов, на котором я работаю. Когда изображения загружаются ... они сохраняются в виде миниатюр на главном внешнем сервере, пока cron не запустится (каждые 10 минут) и не переместит их на серверы хранения, поэтому в течение первых 10 минут они будут находиться и обслуживаться. с главного интерфейсного сервера.
Когда файл загружается, пользователям даются коды для встраивания ... это URL-адрес эскиза + ссылка на полный размер, то есть HTML-страницу. Так что это может быть что-то вроде http://www.domain.com/temp_content/filename.jpg который ссылается на http://www.domain.com/file-ID
За исключением 10 минут, http://www.domain.com/temp_content/filename.jpg не будет, это будет http://server1.domain.com/thumbs/filename.jpg
если пользователь схватил исходный код ... файл большого пальца будет поврежден.
Я МОГ переместить файл в место назначения без cron, но это займет время и задержит скрипт до завершения перемещения. Я также не хочу, чтобы пользователи выполняли подобные команды, я бы предпочел, чтобы сервер выполнял их через регулярные промежутки времени.
Что еще я могу сделать?
Я бы начал всегда с абстрагирования имени файла. Это избавит вас от лишних хлопот.
Затем вы можете раздать вторую ссылку (server1.domain.com), так как именно туда пойдет большинство запросов, а затем обработать крайние случаи, когда файл еще не был перемещен с помощью mod_rewrite. Например:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^/?(.*)$ http://www.domain.com/$1 [R=302]
Это будет 302 (временно) перенаправить запросы к файлам, которые не существуют, в другой домен.
В качестве альтернативы вы можете сделать хранилище с первого сервера доступным со второго.
Не могли бы вы изменить сообщение, отправляемое пользователям, чтобы оно включало оба URL-адреса?
Вы также можете создать настраиваемую страницу ошибок, которая позволяет пользователям вводить предоставленный им URL-адрес и автоматически переводить его.