Iphone 在iOS应用程序中创建代理

Iphone 在iOS应用程序中创建代理,iphone,objective-c,uiwebview,proxy,Iphone,Objective C,Uiwebview,Proxy,我有一个带有UIWebView的应用程序(与网站相连);用户将导航到该网站。之后,我希望当用户打开应用程序,没有连接时,已经访问过的页面可以访问 因此,我认为,如果我在应用程序中创建一个内部代理,这应该是可能的:每个请求都将由该代理处理(并将结果发送到UIWebView)。当然,代理应该缓存网页,如果没有可用的连接,则使用缓存的网页 我更喜欢这种方法而不是其他方法(HTML5离线缓存),因为在将来,我可以为代理设置一些功能,例如“我想在未来5小时内缓存所有图片”等等 你知道这是否可能,如果可能,

我有一个带有UIWebView的应用程序(与网站相连);用户将导航到该网站。之后,我希望当用户打开应用程序,没有连接时,已经访问过的页面可以访问

因此,我认为,如果我在应用程序中创建一个内部代理,这应该是可能的:每个请求都将由该代理处理(并将结果发送到UIWebView)。当然,代理应该缓存网页,如果没有可用的连接,则使用缓存的网页

我更喜欢这种方法而不是其他方法(HTML5离线缓存),因为在将来,我可以为代理设置一些功能,例如“我想在未来5小时内缓存所有图片”等等

你知道这是否可能,如果可能,我应该用什么来做?
或您知道是否已经做了类似的事情(一些Objective-C代理?)

最简单的方法是使用HTTP缓存机制。您可以在web服务器上设置HTTP头吗?如果是这样,您可以为网站上的每幅图片或其他资源设置最大年龄,使其在缓存中保留一段时间

UIWebView将支持HTTP头

这是最简单的方法,但它是有限的。iOS设置了某些缓存大小限制。大型资源可能不会被缓存,或者可能会很快从缓存中踢出其他资源

另一种方法是使用NSURLRequestUseProtocolCachePolicy标志发送您自己的资源请求,并指定NSURLRequestUseProtocolCachePolicy标志。您可以尊重web服务器缓存,也可以覆盖它。在这种情况下,缓存由iOS为您处理。问题是无法为UIWebView指定代理。这意味着您必须自己管理到代理的重定向。您将需要分析网站内容并捕获图像、CSS、javascript等的内部请求

另一种方法是处理请求和缓存自己。这显然是最费力的方法,但你将拥有完全的控制权


您可能希望在代码中使用或,或者自己从它们的实现中获得想法。

最简单的方法是使用HTTP缓存机制。您可以在web服务器上设置HTTP头吗?如果是这样,您可以为网站上的每幅图片或其他资源设置最大年龄,使其在缓存中保留一段时间

UIWebView将支持HTTP头

这是最简单的方法,但它是有限的。iOS设置了某些缓存大小限制。大型资源可能不会被缓存,或者可能会很快从缓存中踢出其他资源

另一种方法是使用NSURLRequestUseProtocolCachePolicy标志发送您自己的资源请求,并指定NSURLRequestUseProtocolCachePolicy标志。您可以尊重web服务器缓存,也可以覆盖它。在这种情况下,缓存由iOS为您处理。问题是无法为UIWebView指定代理。这意味着您必须自己管理到代理的重定向。您将需要分析网站内容并捕获图像、CSS、javascript等的内部请求

另一种方法是处理请求和缓存自己。这显然是最费力的方法,但你将拥有完全的控制权


您可能希望在代码中使用或,或者自己从它们的实现中获得想法。

有关这方面的简单实现以及如何构建更复杂实现的讨论,请参阅,有关这方面的简单实现以及如何构建更复杂实现的讨论,请参阅