静态 HTML 页面、客户端缓存和传递参数

Static HTML pages, client caching and passing parameters

本文关键字:参数 缓存 客户端 HTML 页面 静态      更新时间:2023-09-26

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

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

问题:

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

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

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

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

好吧,很抱歉造成误解,但我认为您的方法走错了路。你不能以这种方式使用GET参数,JQueryMobile在AJAX的URL处理中也有点混乱。

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

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

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