Deixe o protocolo de lado!

HTTP não é o único protocolo. Os clientes podem muito bem decidir qual usar e se eles escolherem, eles geralmente querem usar para tudo.

Portanto, você deve simplesmente omitir o protocolo em html, css, javascript e tudo o mais que está em seu site, a menos que o URI aponte para um recurso externo. O navegador pode então escolher HTTP, HTTPS, SPDY ou o que quer que seu servidor web ou CDN ofereça. Além disso, isso tem a vantagem de você nunca ver um aviso de que alguns conteúdos em um site criptografado com HTTPS não estão criptografados, porque o navegador sempre usa o protocolo correto. Portanto, substitua este:

<script src="http://foo.bar/js.js"></script>
<img src="http://foo.bar/img.png" />

com isso:

<script src="//foo.bar/js.js"></script>
<img src="//foo.bar/img.png" />

Os clientes que acessam seu site via HTTP irão buscar os arquivos usando HTTP, clientes que usam HTTPS irão buscar usando HTTPS e assim por diante.

Antes que você pergunte: sim, esse comportamento é especificado (rfc 3980) e o suporte ao navegador é bom (exceto IE 6 [sic]).