現在要在一個主頁中分別載入頁頭和頁尾,用iframe效能不好,純html頁面所以也不能用php的include方法直接載入頁面,React、angular這些框架的模板導入我也還沒學過,所以想來想去只能jquery的load()載入進來,現在的問題是load方法會造成同步的主執行緒阻塞問題,頁面體驗很不好。
Synchronous XMLHttpRequest on the main thread is deprecated because of its detrimental effects to the end user's experience. For more help, check https://xhr.spec.whatwg.org/.
現在我的問題是:
1.load方法不能像$.get或$.post這些ajax方法一樣設定成異步加載,從而避免阻塞主執行緒嗎?我要怎麼解決load()造成的主執行緒阻塞問題?
看過相關資料,用h5的Worker好像可以避免主執行緒阻塞,是不是只有這種方式能解決,worker沒用過。
2.針對我這種需求,除了我文中說的這幾種方式外,就目前我的情況來說應該怎麼解決,公司開發中哪種方式解決頁頭頁尾加載最好呢?
歡迎大家的幫忙解決,謝謝!
load()預設就是非同步載入的,不會造成主執行緒阻塞。所以警告中的同步阻塞問題不是這裡單一的load()造成的。後來我查了子頁面,發現子頁面中有
1.此方法的底層呼叫的是$.ajax()方法,對服務端進行ajax請求。所以預設就是非同步載入的,不會造成主執行緒阻塞。
。不過因為預設就是非同步加載,所以就可能出現這種情況,頁面主體部分先顯示出來,而後服務端的頁頭,頁尾資料才返回過來並插入頁面中,導致頁面主體部分,頁頭,頁尾不同時出現,會閃一下。
2.我遇到的情況是頁頭頁尾搭配相對固定的情況,因此可以做一個模板頁面,頁頭和頁尾寫死在其中,而後頁面的主體部分嵌入iframe,根據情況設置iframe的地址指向相應的具體頁面。
1當然可以.
2.我通常是頭和尾,加上content,會做成base.html,php用的時候會extend base.html