【问题标题】:Save the web page offline for read later on iOS离线保存网页以供稍后在 iOS 上阅读
【发布时间】:2013-03-08 19:31:30
【问题描述】:

我正在尝试制作一个可以离线保存网页以供以后阅读的应用程序。我发现 ASIWebPageRequest 项目可以缓存网页内容。但是,我有一个问题,如果我有很多网页,比如 100 页,每个网页都包含很多图像。这是一个很好的解决方案吗?或者这个项目可以从它的缓存中动态加载内容?

我正在考虑另一种解决方案,但我不确定它是否可能以及如何实施。能帮忙给点建议吗?

在加载页面时,iOS 会解析 http 内容并将所有资源,例如 image、css、js 保存到数据库中。下次访问它时,它会获取那些资源数据库。有可能吗?

最好的问候,

【问题讨论】:

    标签: iphone ios


    【解决方案1】:

    是的,这是可能的。

    您可以对 NSURLRequest 返回的内容进行正则表达式,并将所有链接和图像保存到磁盘。我的建议是,用正则表达式替换路径并将图像/资源重命名为其内容的 md5。所以如果你得到一个图像两次,它只会下载一次:)

    我为此写了很多代码,但我不能发布它:(但这是可能的,它有效,大约需要 100 行。

    如果对您有帮助,请+1。谢谢:)

    【讨论】:

    • 我有一个问题。您是否将它们保存为捆绑中的单独文件?还是将它们存储在数据库中?
    • 我将每个文件保存为单独的文件。如果文件的 url 是“foo.org/abc.gif”,我会这样存储它:appfolder + “foo.org/”。不需要数据库。只需替换 html 中的 src/href 标签并将其保存到磁盘。
    【解决方案2】:

    这看起来是使用 NSURLCache (http://www.nshipster.com/nsurlcache/) 的绝佳机会。它以多种模式运行,其中两种可以满足您的要求。首次使用时,您将使用它来填充缓存。在后续使用中,您可以在ReturnCacheDataDontLoad 模式下使用它。这将完全消除您在维护/更改相对路径、跨域问题等方面可能遇到的任何问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-07
      • 1970-01-01
      • 2013-05-25
      • 2016-06-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多