2017-07-10 115 views
2

我有以下网页,将http流量重定向到httpsHTML和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> 

问题

我已经放在HTML body上面的重定向的JavaScript。这是否意味着在body尝试加载之前页面将被重定向?

我想尽可能提高此代码的效率。

任何意见赞赏。

+8

如果您想要效率,请使用服务器端重定向。 –

+0

_“这是否意味着页面会在正文加载前重定向?”_是 – j08691

+0

感谢Jonas,我在AWS ELB上托管我的页面。我已经尝试了大约一周的时间来获取服务器端重定向工作,但似乎无法得到它,所以这是我的最后一招。 – Richard

回答

2

要回答你的问题,是的,该脚本将在它下面的所有内容之前执行。但是,如果Javascript被禁用或不受支持,您将遇到问题。

通常,我会建议您使用服务器端重定向。如果你知道PHP,那是一个简单的选择。如果你不这样做,并且这是在Apache托管的服务器上(本地主机或外部),我想你可以使用一个.htaccess file也许你的网络主机的CPANEL可以不用编辑任何东西。例如,某些CPANEL可以选择自动重定向HTTP链接HTTPS。如果您的CPANEL没有,您可以(我想)使用您的CPANEL提供的任何选项将每个HTTP页面重定向到HTTPS。

如果你绝对必须有最有效的选择,它的.htaccess(虽然这也是最痛苦的,所以我会建议的cPanel或PHP,如果你提供这些选项。)

1

HTML页面从左到右,从上到下进行处理,除非有相反的具体说明。

鉴于您的JavaScript未封装在函数中或被指定为回调函数,它将在它之后的HTML之前运行。

1

通过设置window.location .href你告诉浏览器离开, 所以不管你有什么不会被执行。很明显,如果你之前有一些东西(CSS,其他脚本,...),它将会被处理。

的事情是,浏览器可能已经开始下载/开始执行任何脚本之前分析其他资源(这取决于发动机。)

,最好的办法是重定向服务器端,使其更快,除非逻辑必须位于您的Web应用程序中。

More info