HTML5 LocalStorage作为缓存和单个资产请求

时间:2012-08-16 16:55:00

标签: javascript web-applications architecture assets

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

要求:

  1. 支持LocalStorage的浏览器。
  2. Serverside asyncronous non-blocking i / o technology。
  3. 让我们想象以下请求流程:

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

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

    3. 客户 - >如果确定        - >使用服务器

    4. 建立websocket

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

      1. 服务器 - >寻找特定于以下内容的匹配资产 (样式表,图像,javascript文件,字体等):语言,浏览器,特定于分辨率的资产),并通过websocket对它们进行流式处理。

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

      3. 受益1。 通过线路没有多个请求,无法进行DNS查找等。

        BENEFIT 2。 在localStorage中缓存这些资产,这是以下阶段。

        1. 请求 - >放入LocalStorage缓存。
        2. 请求 - >渲染网站。
        3. 我想知道得到一些意见,什么可能是一个好主意,什么可能不是等等。

          我的第一个想法是:

          • 此架构不支持CDN
          • 我们需要一个单一的请求才能让javascript / html启动WebSocket等。

          我希望我的问题很明确。

1 个答案:

答案 0 :(得分:3)

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

  

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

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

使用今天的技术,就网络客户端而言,只需要少量资源就可以提供完整的页面和应用程序(所有这些都可以被gziped!):

  1. HTML
  2. 将CSS文件合并和缩小为一个资源
  3. 与JS相同
  4. image sprite
  5.   

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

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

    需要考虑的其他事项:

    1. 不要低估CDN。它们是生命储蓄者 潜伏。您的方法在第一阶段不是延迟友好的 请求。
    2. AJAX和渐进增强方法可以优化网络应用 让它感觉像桌面应用程序的经验。
    3. 您需要重新发明或修改FireBug等工具才能正常工作 一个包含所有资源的流。没有网络开发可以 现在想象没有那些工具。
    4. 如果浏览器本身不支持这种方法,那么你会 仍然有一段时间编程并让浏览器知道 您的流包含什么以及如何处理它。到你的时候 处理流并触发所有必要的事件(在最佳状态下) 顺序!)你可能没有获得你希望的那么多好处。
    5. 祝你好运!