wiki:NetworkCleanupDiscussion2015

Version 2 (modified by achristensen@apple.com, 8 years ago) (diff)

--

Network Loading Refactoring

  • Intro
    • I (Alex) have been doing a lot of work in it recently - "Its horrible."
    • I think we made a mistake using ResourceHandle in WebKit2
    • NSURLConnection (Mac) is deprecated
    • NSURLSession is the replacement, converting to it now
      • fits much better
  • Sessions on other ports?
    • GTK / EFL - Not sure.
    • Another port (Naver Windows) uses the chromium networking stack.
    • webkit-dev thread about how to get this working with libsoup => talk to Carlos Garcia
  • WebKit2, ResourceLoader proxies to the NetworkProcess
    • easy cleanup if we eliminate non-NetworkProcess path
    • some loads in WebProcess (ApplicationCache)

Issues

  • Confusion
    • few people understand how the loaders work (FrameLoader, MainFrameLoader, DocLoader)
  • Careful when moving to Sessions
    • NSURLConnection hooks may be exposed to WebKit1 Mac APIs, fragile
  • Before refactoring, someone has to understand everything
    • fix one loader bug and introduce others
  • Update the loader diagram http://www.webkit.org/blog-files/loader-diagram.svg
    • lots of changes (DocLoader => CachedResourceLoaders)
    • main resource is cached now
    • ThreadableDocumentLoader => XHR / fetch / workers / background loading
    • other loaders (PingLoader)

Goals

  • sandbox the web process from making any network requests
  • make NetworkProcess mandatory WebKit2
  • Memory Cache (Antii)
    • want to move work off of the Main Thread in WebProcess (when communicating with NetworkProcess)
    • want to improve cooperation between WebProcess and NetworkProcess caches (MemoryCache and NetworkCache)