javascript - 延迟升级到 HTTPS (TLS/SSL)

标签 javascript html ssl https

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/

相关文章:

javascript - 如何在Javascript中将两个数组添加到一个数组中

javascript - 通过查找输入背景颜色更改 div 颜色

html - 如何嵌套具有相对定位和绝对定位的CSS框

jquery - 应用程序应在三星智能电视的 Smart Hub 上退出

ssl - DNS 中是否弃用了 CERT 记录?

使用 Jsoup 时,Java 11 HTTPS 连接失败并出现 SSL HandshakeException

javascript - 如何在 select2 单选中触发标签创建(例如,按下相邻按钮时)?

javascript - 向后恢复动画 CSS

php - jQuery/php/mysql - 如何在不重新加载页面的情况下操作 mysqli_query?

java - 无法为 JMX 禁用 SSL