3

我想知道以下概念的限制和缺点:

要求:

  1. 支持 LocalStorage 的浏览器。
  2. 服务器端异步非阻塞 i/o 技术。

让我们想象一下以下请求流程:

  1. 客户端 GET / 请求 -> 服务器。我们将此阶段称为“问候”,这是一个有趣的阶段,因为客户端现在发送(当然也是通过标头):

    • ip
    • 浏览器
    • 浏览器版本
    • 语言
    • 字符集
  2. 服务器 -> 客户端(200 OK)

  3. 客户端 -> 如果 OK -> 与服务器建立 websocket

一旦建立了 websocket,我们就进入了“资产流”阶段。

  1. 服务器 -> 查找特定于:语言、浏览器、分辨率特定资产的匹配资产(样式表、图像、javascript 文件、字体等)并通过 websocket 流式传输它们。

  2. 服务器 -> 请求(websocket,资产的异步流)

好处 1.没有多个请求通过线路避免 DNS 查找等。

好处 2.将这些资产缓存在 localStorage 中,这是下一阶段。

  1. 请求 -> 放入 LocalStorage 缓存。
  2. 请求 -> 渲染网站。

我想知道得到一些意见,什么可能是个好主意,什么可能不是等等。

我的第一个想法是:

  • 此架构不支持 CDN
  • 我们需要一个请求来获取 javascript / html 来启动 WebSocket 等。

我希望我的问题很清楚。

4

1 回答 1

3

有趣的方法,绝对值得思考。让我成为你的恶魔的拥护者:

好处 1. 没有多个请求通过线路避免 DNS 查找等。

这是真的,尽管这只是您第一次访问页面/站点时的问题。通过现代浏览器实现的预取,它也得到了一定程度的缓解。重要的是要记住,浏览器将并行下载多个资源,这可能比批量下载整个有效负载更快,而且肯定响应更快。

使用当今的技术,就 Web 客户端而言,您已经可以使用少量资源来提供完整的页面和应用程序(所有这些都可以压缩!):

  1. HTML
  2. 合并和缩小 CSS 文件作为一种资源
  3. JS也一样
  4. 图像精灵

好处 2. 在 localStorage 中缓存这些资产......

浏览器已经缓存了这些资产!此外,还有一些经过验证的智能技术可以使这些缓存失效(这是软件开发中的第二大挑战)。

其他需要考虑的事项:

  1. 不要小看CDN。在延迟方面,它们是救生员。在第一次请求期间,您的方法对延迟不友好。
  2. AJAX 和渐进增强方法可以优化 Web 应用程序体验,使其感觉就像一个桌面应用程序。
  3. 您将需要重新发明或修改 FireBug 等工具,以使用包含所有资源的流。如果没有这些工具,现在无法想象 Web 开发。
  4. 如果浏览器本身不支持这种方法,那么您仍然需要花费大量时间进行编程并让浏览器知道您的流包含什么以及如何处理它。当您处理流并触发所有必要的事件(以最佳顺序!)时,您可能不会获得您希望的那么多好处。

祝你好运!

于 2012-08-17T06:24:13.873 回答