在 webView 上加载本地存储的文件时延迟

Posted

技术标签:

【中文标题】在 webView 上加载本地存储的文件时延迟【英文标题】:Delay while loading locally stored file on webView 【发布时间】:2016-05-12 06:39:31 【问题描述】:

我正在我的webView 上加载本地存储的 html(带有 javascript 的文件)文件。这些文件加载​​在我的ViewController.swift 中。但是,第一次启动应用程序时会有约 2-3 秒的延迟。我已经在网上搜索了解决此问题的方法,使用我观察到的方法(第一次加载 webView 延迟了资源的加载),我决定在我的 ViewController 中使用 NSNotificationCenter 并打电话给他们来自“AppDelegate”,以便第一次加载webView

在我的代码中实现这些更改后,应用程序的LaunchScreen 出现延迟,这与我在这里加载文件的预期一样,但是,ViewController 的加载时间仍然相同。

我正在调用通知 AppDelegate.swift

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool 
        // Override point for customization after application launch.
        NSNotificationCenter.defaultCenter().postNotificationName("loadDefaultWebViewID",object:nil)


        return true
    

ViewController.swift

override func viewDidLoad() 
    super.viewDidLoad()

    NSNotificationCenter.defaultCenter().addObserver(self, selector: "loadDefaultWebView:", name: "loadDefaultWebViewID", object: nil)
    if let htmlURL = NSBundle.mainBundle().URLForResource("index", withExtension: "html") 
        let requestObject = NSURLRequest(URL: htmlURL)
        webViewHTML5Player.loadRequest(requestObject)

    

我希望减少ViewController 上的延迟。如果这不是正确的方法,是否有其他更好的优化方法来完成此任务?

编辑 1

为此我已经尝试使用WKWebView(with preferences.javaScriptEnabled = true) 和UIWebView,加载时间仍然相同。

【问题讨论】:

【参考方案1】:

这是UIWebView 中的常见问题。我的意思是让 web 视图最初隐藏(显示某种“正在加载...”指示器),然后在 webViewDidFinishLoad: method 中取消隐藏它。你也可以参考这个链接UIWebView lower loading time with a more efficient way和Preloading webView doesn't work - trying to reduce loading time

【讨论】:

以上是关于在 webView 上加载本地存储的文件时延迟的主要内容,如果未能解决你的问题,请参考以下文章

Android WebView 不会加载本地文件

在 Android 上像 tumblr 一样延迟加载图像

无法在 webview 中显示本地存储中的 html 文件

在本地使用pdftron Webviewer服务器时无法加载pdf文件

当设备在 react-native 中离线时,在 webview 中显示本地图像

如何让 Flutter 的 webview 处理从本地 html 加载的本地资产?