繁体   English   中英

秘银避免重新加载图像

[英]mithril avoiding to reload image

我正在使用秘银0.2.2-rc.1。 我在路由文档中看到: 路由是一个系统,它允许创建单页应用程序(SPA),即可以在导致浏览器完全刷新的情况下从一个页面转到另一个页面的应用程序。

事实上,当我路由到不同的参数,只是我想更改刷新预计这一部分在同一个页面:

m("img[src='assets/images/logo.png'][alt=''][width='100']")

我可以在网络通信中看到图像已重新加载(另一个GET请求)。

有办法避免这种情况吗?

route.js

m.route.mode = "pathname";

m.route(document.getElementById('app'), '/', {
    '/': main,

    '/modelling/:level': main

})

很难看到这两段代码是如何组合在一起的,但是有两点说明了自己:

  1. 路由的每次更改(即使该更改导致相同的路由条目,例如/modelling/x/modelling/y )也将导致重新生成整个DOM。 您可以通过在每个路由组件的控制器中调用m.redraw.strategy( 'diff' )来防止此行为。
  2. 重复请求相同的资源不会导致对服务器的额外调用:一个多页面站点,每个页面都请求相同的JS和CSS,只会加载这些资源一次,并且会在后续请求中访问浏览器缓存。 因此,反复请求相同的图像资源不会对服务器产生任何新的调用。

如果查看m方法的文档,您将看到config属性可让您在重绘之间保留元素。 因此,这应该为您工作:

m('img', {config: function persist(el, isInit, context)}) {
    context.retain = true;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM