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');
}
);
}
这样做可能会导致页面在新页面加载时“闪烁”。有没有一种方法可以让用户不太明显地做到这一点?
最佳答案
闪光将来自第二个 https
的资源/css/图像等的加载。网址。
同时http
速度更快,对于使网站的面向公众的部分具有 SEO 优势 https
这将解决双域问题。
预取
如果它们位于登录屏幕上,并且您知道它们很快就会被重定向到安全的 https 版本,您可以开始在 https 协议(protocol)上预加载 Assets 。
一些 HTML5 预取可能对此很有帮助,How can I preload a page using HTML5?
<link rel="prefetch" href="/path/to/prefetch" />
与 https 一致的 Assets 链接
您可以使用 https 协议(protocol)链接到 http 站点上的所有资源,无需预加载。这可能会增加非 https 版本的任何人的开销。因此,您可能只想通过 https 加载 Logo /标题图形和 css/js。这将提高域切换时的感知性能,主要资源和样式会像任何其他重新加载一样卡入到位。
CDN
最终的解决方案是将 Assets 推送到 Amazon Web Services 等内容交付网络。因此,两个域都加载相同的资源,您必须使用 https
否则在链接到 http
时您会收到警告当在 https
上时领域。当用户切换时,浏览器将已经保存所有资源的缓存副本。这通常会加快页面加载速度。由于浏览器的并发请求限制(6 - 8 个),这意味着您的服务器将提供 HTML 等重要内容,并且浏览器可以同时从 CDN 加载资源。
SPDY
回到主题,考虑到协议(protocol)升级,我将开始研究 Google 的 SPDY。 Chrome Firefox Opera & IE11 均支持。它比 HTTP 或 HTTPS 更安全且更快。再加上从 CDN 加载的一些 WEBP 图形,您将面临接近光速的危险。 http://en.wikipedia.org/wiki/SPDY#Browser_support_and_usage
关于javascript - 延迟升级到 HTTPS (TLS/SSL),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22774647/