簡體   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