HTTP是快速的(在初始页面上),而HTTPS是安全的。我有一个站点example.com,它只需要在用户登录时才能安全(它使用安全cookie进行身份验证)。
由于速度是第一印象中最重要的因素之一,我想提供正常的HTTP页面(http://example.com),然后使用Javascript懒洋洋地升级到HTTPS。
if ( location.protocol === 'http:' ) {
$.ajax({
url: 'https://example.com',
cache: true,
success: function() {
window.top.location.replace('https://example.com');
}
);
}这样做会导致页面在加载新页面时“闪现”。是否有一种对用户来说不太明显的方法?
发布于 2014-04-04 04:14:13
闪存将来自第二个https url中的资产/css/映像等的加载。
虽然http更快,但SEO的好处是让公众面对站点https的一部分,这将解决双重领域问题。
预取
如果它们在登录屏幕上,并且您知道它们很快就会被重定向到保护https版本,那么您可以开始预装https协议上的资产。
HTML5预取可能会很好,How can I preload a page using HTML5?
<link rel="prefetch" href="/path/to/prefetch" />
链接到与https一致的资产
您可以使用https协议链接到http站点上的所有资产,不需要预加载。这可能会增加任何不在https版本上的人的开销。因此,您可能只想在https上加载徽标/标头图形和css/js。这将提高感知的性能,因为当域切换主资产和样式时,就会像其他任何重新加载一样迅速恢复正常。
CDN
最终的解决方案是将资产推送到像Amazon这样的内容交付网络。因此,这两个域都加载了相同的资产,您必须使用https,否则在http域上链接到https时会收到警告。当用户切换时,浏览器将已经保存了所有资产的缓存副本。这将加快页面加载的速度。由于并发请求限制,浏览器有(6-8),这意味着您的服务器将交付像HTML这样的重要内容,并且浏览器可以同时从CDN加载资产。
SPDY
回到话题,考虑到协议升级,我将开始研究谷歌的SPDY。& IE11也有支持。其安全性和比HTTP或HTTPS更快的。结合一些WEBP图形加载一个CDN,你将面临接近光速的危险。usage
发布于 2014-04-10 17:55:41
您想要的,只能在php中完成。
if($_SERVER['SERVER_PORT'] != 443) {
$url = "https://{$_SERVER[HTTP_HOST]}{$_SERVER[REQUEST_URI]}";
header("Location: $url");
exit;
}https://stackoverflow.com/questions/22774647
复制相似问题