【问题标题】:Static HTML pages, client caching and passing parameters静态 HTML 页面、客户端缓存和传递参数
【发布时间】:2013-01-09 14:40:08
【问题描述】:

我正在构建一个相当大的移动应用程序,该应用程序当前构建在 jQuery Mobile 和 KnockoutJS 之上。我的第一种方法大量使用了单页应用程序设计,并通过 Knockout 和 ajax 调用加载所有动态内容和数据。这工作正常,但随着 jQuery Mobile 越来越多地加载到 DOM 中,维护和开发变得非常复杂。

我想知道是否转移到更传统的、单独的 HTML 页面,这些页面完全静态,同时仍通过 Knockout 和 ajax 加载数据。这将允许浏览器缓存应用程序的最大部分:HTML 页面。

问题:

如何在不创建禁止客户端浏览器缓存的唯一 URL 的情况下最好地在页面之间传递参数? 我希望浏览器主动缓存页面。

我意识到我可以实现各种服务器端缓存,但这不是我的目标。 /Display/3/Display/5 是同一页。浏览器会将这些缓存为一个吗?

我想知道在哈希标记之后传递参数吗? /Display#3/Display#5?在全局命名空间中通过 JavaScript 传递参数怎么样?

希望这里有一个标准的方法。

【问题讨论】:

    标签: javascript html asp.net-mvc jquery-mobile knockout.js


    【解决方案1】:

    好的,很抱歉造成误解,但我认为您的方法是错误的。您不能那样使用 GET 参数,JQueryMobile 在 AJAX 的 url 处理方面也有点混乱。

    通常,如果使用 AJAX 刷新内容,您不需要重新加载页面。所以你不需要缓存,因为页面已经存在并且只有一些内容通过 AJAX 重新加载。但是 JQM 的单页方法不适用于动态创建的内容。您只能动态创建一个包含所有内容的页面,而 JQM 通过切换可见性来显示内容。然后 # 可用于在页面之间切换(# 不会强制重新加载,如用于侧面导航)。

    您可以编写自己的加载函数调用按钮和链接(而不是使用 URL GET 参数)。通过将 JQuery 的 $.ajax 方法与 dataType "html"(而不是 json,默认)一起使用,您可以在其成功处理程序中进行内容刷新。

    【讨论】:

      【解决方案2】:

      你可以试试 html5 sessionStorage/localStorage。如果 html5 是一个问题,那就是普通的旧 cookie。 澄清一下,如果有多个 HTML 页面,每个页面都必须有自己的 URL。

      【讨论】:

      • 我有 page.html 但需要传递一个最终影响我的 JavaScript 的参数。 page.html?id=1page.html?id=3 都是同一个页面,我希望浏览器只缓存 page.html。我不希望添加参数来创建 2 个唯一页面。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-06-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多