如何在jQuery Mobile UI中禁用缓存

Ser*_*hiy 27 javascript jquery jquery-ui jquery-mobile

试了...

<div data-role="page" data-cache="30"> 
<div data-role="page" data-cache="never">
<div data-role="page" data-cache="false"> 
<div data-role="page" cache="false">
Run Code Online (Sandbox Code Playgroud)

没有什么可以工作......所以目前我正在修复服务器端的问题...

.'?x='.rand()
.'&x='.rand()
Run Code Online (Sandbox Code Playgroud)

我不想禁用AJAX只是缓存.必须有更好的方法......我错过了什么吗?

谢谢,

谢尔盖·

Ser*_*hiy 36

谢谢你们的答案,尽管他们对我不起作用,但他们确实指出了我找到我正在寻找的代码的方向.

这是我在这位绅士的Github Gist上找到的代码.

https://gist.github.com/921920

jQuery('div').live('pagehide', function(event, ui){
  var page = jQuery(event.target);

  if(page.attr('data-cache') == 'never'){
    page.remove();
  };
});
Run Code Online (Sandbox Code Playgroud)

在Gist中还有一个后退按钮代码,但我似乎并不需要它,因为我的后退按钮似乎工作得很好......

  • 简单来说,从jQuery 1.7开始,`.live()`方法不推荐使用`.on()`.所以一个更新的例子是`jQuery(document).on('pagehide','div',function(event,ui){...});` (8认同)

jre*_*ard 6

您是否尝试覆盖默认值?

$(document).bind("mobileinit", function(){
    $.mobile.page.prototype.options.domCache = false;
});
Run Code Online (Sandbox Code Playgroud)

这适合我


Mar*_*tin 5

现在,jQM RC1中的页面缓存现已关闭.请参阅jQM网站上有关页面缓存的摘录:http://jquerymobile.com/demos/1.0rc1/docs/pages/page-cache.html

如果您愿意,可以告诉jQuery Mobile将以前访问过的页面保留在DOM中,而不是删除它们.这使您可以缓存页面,以便在用户返回时立即可用.

要将所有以前访问过的页面保留在DOM中,请将页面插件上的domCache选项设置为true,如下所示:

$.mobile.page.prototype.options.domCache = true;

或者,要仅缓存特定页面,可以将data-dom-cache ="true"属性添加到页面的容器中:

<div data-role="page" id="cacheMe" data-dom-cache="true">

您还可以以编程方式缓存页面,如下所示:

pageContainerElement.page({ domCache: true });

DOM缓存的缺点是DOM会变得非常大,导致某些设备出现速度减慢和内存问题.如果启用DOM缓存,请注意自己管理DOM并在一系列设备上进行彻底测试.

  • 仅供参考,DOM缓存已关闭,但我认为仍有一些其他类型的缓存会导致动态Web应用程序出现问题.我正在1.0发布,我看到我的应用程序的缓存问题.从缓存中强制删除页面的已接受答案似乎可以缓解这些问题. (5认同)