2017-07-10 14 views
2

httpのトラフィックをhttpsにリダイレクトする次のWebページがあります。私は、HTML bodyの上にリダイレクトするJavaScriptを置いているHTMLとJavaScriptの実行順序

<head> 
<script type="text/javascript"> 
    var loc = window.location.href+''; 
    if (loc.indexOf('http://www.') == 0 && loc.indexOf('.com') > -1) { 
     window.location.href = loc.replace('http://www.','https://www.'); 
    } else if (loc.indexOf('http://') == 0 && loc.indexOf('.com') > -1 && loc.indexOf('www.') == -1) { 
     window.location.href = loc.replace('http://','https://www.'); 
    } 
</script> 
</head> 
<body> 
    ... 
</body> 

質問。これは、bodyが読み込まれる前にページがリダイレクトされることを意味しますか?

私はこのコードをできるだけ効率的にしようとしています。

ご了承ください。

+8

効率を望む場合は、サーバーサイドのリダイレクトを使用してください。 –

+0

_「本文が読み込まれる前にページがリダイレクトされることを意味しますか?」はいはい – j08691

+0

ありがとうございました。私はAWS ELBで自分のページをホストしています。私は約1週間、サーバー側のリダイレクト作業を取得しようとしましたが、それを得るように見えないので、これは私の最後の手段です。 – Richard

答えて

2

あなたの質問に答えるために、はい、それよりも前にスクリプトが実行されます。ただし、Javascriptが無効になっている場合、またはサポートされていない場合は、問題が発生します。

通常、サーバー側のリダイレクトを使用することをお勧めします。 PHPを知っているなら、これは簡単なオプションの1つです。あなたがしていない場合、これはApacheホストサーバー(ローカルホストか外部サーバーか)にあります。.htaccess fileを使うことができると思います。あなたのwebhostのCPANELで何も編集せずにこれを行うことができるかもしれません。たとえば、CPANELの中には、HTTPリンクHTTPSの自動リダイレクトオプションがあります。あなたのCPANELがそうでないなら、CPANELがあなたに与えるどんなオプションを使ってもHTTPページをすべてHTTPSにリダイレクトできます。

あなたは絶対に最も効率的なオプションを持っている必要がある場合、それは.htaccessのだ(それも一番辛いですが、あなたはそれらのオプションを与えている場合、私はCPANELやPHPをお勧めします。)

1

HTMLページは、具体的な指示がない限り、左から右、上から下に処理されます。

JavaScriptが関数にカプセル化されていないか、コールバックとして割り当てられていると仮定すると、そのJavaScriptはそれに続くHTMLの前に実行されます。

1

window.locationのを設定することにより.hrefあなたは、実行する必要はありませんので、あなたが持っているので、 を残すようにブラウザに指示しています。明らかに、その前に何かがあったら(css、他のスクリプト、...)、すでに処理されているはずです。

事は、ブラウザが任意のスクリプトを実行するために開始する前に他のリソースをパース/ダウンロードを開始しているかもしれないということです(これは、エンジンによって異なります。)

最良の方法は、サーバー側がより速くそれを作るためにリダイレクトすることです、論理があなたのウェブアプリケーションになければならない限り。

More info