Recuar para imagens locais quando o Cloud Files for interrompido?

12

Estou usando o módulo Cloud Files , que usa a API PHP do Rackspace Cloud Files para armazenar todos os arquivos carregados no Rackspace Cloud Files (uma CDN). Tudo funciona muito bem.

No entanto, hoje, o próprio Rackspace teve uma interrupção relacionada à API e causou a interrupção de todo o site. Eu absolutamente não posso fazer isso acontecer quando meu site finalmente está no ar. Existe alguma maneira de manter os arquivos localmente e nos arquivos da nuvem, para que, se houver um problema, eu possa alterar uma configuração nas páginas de administração e ela começar a usar os arquivos locais para que o site continue funcionando enquanto o Rackspace trabalha em o problema?

Kenny Wyland
fonte
Estou interessado que você escolheu usar o Cloud Files (específico da Rackspace) e não o módulo CDN . O módulo CDN não possui fallback? Eu não sou profissional na CDN.
Duncanmoo
1
Usei o módulo Cloud Files porque ele lida com a transferência dos arquivos para o Rackspace, enquanto o módulo CDN não. A CDN requer um aplicativo externo chamado File Conveyor para fazer as transferências. Não tive problemas para fazer com que o File Conveyor funcionasse com o Cloud Files sem quebrar meu site, por isso fui com a solução mais fácil.
Kenny Wyland
2
Talvez seja uma boa idéia pedir isso como uma solicitação de recurso na página de problemas do módulo. Teoricamente, se a nuvem da Rackspace tiver problemas para exibir um arquivo, retorne uma resposta "404". Então, se isso acontecer, o módulo deverá retornar ao sistema de arquivos local. Eu acho que isso pode ser feito pelo desenvolvedor do módulo.
ANDiTKO
O módulo CDN suporta AMBOS os modos "Transportador de arquivos" e "Origem". A origem é automática, a transportadora de arquivos não é. Os arquivos em nuvem da Rackspace suportam apenas transportadores de arquivos, portanto, a necessidade de um módulo específico para lidar automaticamente com a transferência de arquivos.
Mike

Respostas:

6

Em javascript, você pode ouvir o ouvinte de evento onerror da imagem.

defina a fonte como normal. no onerror, configure this.src para o caminho da imagem local:

<img src="//somecdn.com/cat.jpg" onerror="this.src='/localpath/cat.jpg';" />

você pode usar o jquery para fazer um loop sobre todas as imagens na página e adicionar o ouvinte de evento onerror

Neil McGuigan
fonte
Não é exatamente o que eu estava procurando, mas mesmo assim uma solução razoável.
Kenny Wyland