UIWebView的缓存策略,清除cookie

缓存策略 NSURLRequestCachePolicy

NSURLRequestUseProtocolCachePolicy
缓存策略定义在 web 协议实现中,用于请求特定的URL。是默认的URL缓存策略

Specifies that the caching logic defined in the protocol implementation, if any, is used for a particular URL load request. This is the default policy for URL load requests.

NSURLRequestReloadIgnoringLocalCacheData

从服务端获取数据,忽略本地缓存

Specifies that the data for the URL load should be loaded from the originating source. No existing cache data should be used to satisfy a URL load request.

NSURLRequestReloadIgnoringLocalAndRemoteCacheData

不仅忽略本地的缓存数据,还忽略中间网络媒介(如代理服务器)忽略缓存。直接从最原始的服务器拿取

Specifies that not only should the local cache data be ignored, but that proxies and other intermediates should be instructed to disregard their caches so far as the protocol allows.

NSURLRequestReloadIgnoringCacheData

被NSURLRequestReloadIgnoringLocalCacheData替换了

Replaced by NSURLRequestReloadIgnoringLocalCacheData.

NSURLRequestReturnCacheDataElseLoad

已经存在的缓存数据用于请求返回,不管它的过期日期和已经存在了多久。如果没有请求对应的缓存数据,从数据源读取

Specifies that the existing cached data should be used to satisfy the request, regardless of its age or expiration date. If there is no existing data in the cache corresponding the request, the data is loaded from the originating source.

NSURLRequestReturnCacheDataDontLoad

已经存在的缓存数据用于请求返回,不管它的过期日期和已经存在了多久。如果没有请求对应的缓存数据,不要去数据源读取,该请求被设置为失败,这种情况多用于离线模式

Specifies that the existing cache data should be used to satisfy a request, regardless of its age or expiration date. If there is no existing data in the cache corresponding to a URL load request, no attempt is made to load the data from the originating source, and the load is considered to have failed. This constant specifies a behavior that is similar to an “offline” mode.

NSURLRequestReloadRevalidatingCacheData

已经存在的缓存数据先去数据源验证有效性,如果无效,将从数据源获取

Specifies that the existing cache data may be used provided the origin source confirms its validity, otherwise the URL is loaded from the origin source.

NSURLRequestUseProtocolCachePolicy 和 NSURLRequestReloadRevalidatingCacheData 区别

个人意见,仅供参考,如有错误,请指出来,这对我很重要,谢谢

NSURLRequestReloadRevalidatingCacheData 是一定要和原始的数据源验证 cache 是否有效。
而NSURLRequestUseProtocolCachePolicy 是根据 web 的协议来控制缓存,服务端返回数据的 head 有相关的信息。它可能会返回中间网络媒介(如代理服务器中的数据)

针对缓存策略做一下本地测试,这是非常有必要的

[objc] view plaincopyprint?

  1. NSURL *webUrl = [NSURL URLWithString:@"http://localhost/test.txt"];
  2. NSURLRequest *request =[NSURLRequest requestWithURL:webUrl cachePolicy:NSURLRequestReloadRevalidatingCacheData timeoutInterval:60];
  3. [self.mainWebView loadRequest:request];

这里使用NSURLRequestReloadRevalidatingCacheData, 返回cache数据一定要先验证数据有效。

  • 使用建立两个同名的test.txt, 先放一个到服务器。

  • 然后直接修改服务器的 test.txt 文件,添加字段" ----------------------------- " 保存,可以看到马上生效了。

  • 用另外一个test.txt替换掉服务器中当前的test.txt,也马上生效了

通过以上简单的验证可以得知NSURLRequestReloadRevalidatingCacheData 这种模式对存储在服务器中的文件的修改和替换是敏感的

我这里使用的是mac系统自带的 appache 服务器
文件目录是在  /Library/WebServer/Documents 
启动Apache的方法是在命令行输入 sudo apachectl start
然后输入密码,输入过程命令行是无显示的,不用管,输入之后敲回车键。会有提示:服务器已经启动。

根据文档的信息,initwithURL 使用的默认缓存机制NSURLRequestUseProtocolCachePolicy,并且是60s的请求时间,超过时间会请求失败

相关文件
清除cookie

[objc] view plaincopyprint?

    1. NSHTTPCookie *cookie;
    2. NSHTTPCookieStorage *storage = [NSHTTPCookieStorage sharedHTTPCookieStorage];
    3. for (cookie in [storage cookies]) {
    4. [storage deleteCookie:cookie];
    5. }
时间: 2024-10-09 02:38:59

UIWebView的缓存策略,清除cookie的相关文章

清除UIWebView的缓存

?//清除cookies NSHTTPCookie *cookie; NSHTTPCookieStorage *storage = [NSHTTPCookieStorage sharedHTTPCookieStorage]; for (cookie in [storage cookies]) { [storage deleteCookie:cookie]; } //清除UIWebView的缓存 [[NSURLCache sharedURLCache] removeAllCachedRespons

c# webbrowser 清除cookie和缓存

由于缓存文件是特殊的文件,以及WebBrowser与IE版本有关因此删除缓存绝对不可能用一些IO函数就总可以解决的因此我的这些函数在IO操作的基础上,又针对环境进行相应的清理. static class WebCleaner { /* * 7 个静态函数 * 私有函数 * private bool FileDelete() : 删除文件 * private void FolderClear() : 清除文件夹内的所有文件 * private void RunCmd() : 运行内部命令 * *

uiwebview 清缓存。,mark

//清除cookies NSHTTPCookie *cookie; NSHTTPCookieStorage *storage = [NSHTTPCookieStorage sharedHTTPCookieStorage]; for (cookie in [storage cookies]) { [storage deleteCookie:cookie]; } UIWebView清除缓存: //清除UIWebView的缓存 [[NSURLCachesharedURLCache] removeAll

对Hibernate缓存策略的理解和应用

引自:http://www.blogjava.net/frostwood/archive/2010/01/06/308465.html Hibernate提供了三个级别的缓存策略:Session缓存(基本的事务级缓存),Query Cache(查询缓存),Seond-Level Cache(二级缓存) Session缓存(First-Level Cache):Session是Hibernate用于管理持久化对象的核心机制,它是针对持久性数据的事务级缓存.PersistenceContext中包括

ATS巧玩儿缓存策略增加动态服务吞吐量

为了提高用户体验,增大缓存放大比,同时又要避免客户报障,在做cache时可谓是煞费苦心,大文件.小文件分离,在小文件里又把动态内容和静态内容分离,能存的东西基本上全部存了,唯有动态内容一直没下手,按照之前的策略,动态内容直接代理,1:1的进出,可是某些局方就是不消停,非要达到某个放大比,没折了,在动态内容里面动一下刀吧. 在动刀之前,先做分析,对能存的动态内容和ATS的缓存策略做了大量测试,受益匪浅.当前ATS的缓存策略完全按照http协议规定,采用最保守的缓存方式,即只对有明确生命周期缓存头的

spring aop + xmemcached 配置service层缓存策略

Memcached 作用与使用 基本介绍 1,对于缓存的存取方式,简言之,就是以键值对的形式将数据保存在内存中.在日常业务中涉及的操作无非就是增删改查.加入缓存机制后,查询的时候,对数据进行缓存,增删改的时候,清除缓存即可.这其中对于缓存的闭合就非常重要,如果缓存没有及时得到更新,那用户就会获取到过期数据,就会产生问题. 2,对于单一业务的缓存管理(数据库中只操作单表),只需生成一个key,查询时,使用key,置入缓存:增删改时,使用key,清除缓存.将key与表绑定,操作相对简单. 3,但是在

Web开发基本准则-55实录-缓存策略

郑昀 创建于2013年2月 郑昀 最后更新于2013年10月26日 提纲: Web访问安全 缓存策略 存储介质连接池 业务降级 并发请求的处理 关键词: 会话串号,Cache-Control头域,缓存穿透,缓存集体失效,缓存重建,缓存雪崩,缓存永不过期,缓存计数器, 二,缓存策略 这里的“缓存”概念不只限于服务器端的“缓存”. 2.1.防会话串号 如果你收到一个投诉,说访问“我的个人中心”页面时进入其他人的帐号,至少订单列表上显示的不是自己的.此时,技术支持人员可以提三个问题,第一,对页面上显示

【转】Retrofit 源码解读之离线缓存策略的实现

Retrofit 源码解读之离线缓存策略的实现 Retrofit 是square公司开发的一款网络框架,也是至今Android网络请求中最火的一个,配合OkHttp+RxJava+Retrofit三剑客更是如鱼得水,公司项目重构时,我也在第一时间使用了RxJava+Retrofit,使用过程中遇到的一些问题,也会在后续的博客中,一点点分享出来,供大家参考! 在项目的过程中,项目需求需要在离线的情况下能够继续浏览app内容,第一时间想到缓存,于是经过各种google搜索,得出以下结论(使用Retr

SP 页面缓存以及清除缓存

JSP 页面缓存以及清除缓存 一.概述 缓存的思想可以应用在软件分层的各个层面.它是一种内部机制,对外界而言,是不可感知的. 数据库本身有缓存,持久层也可以缓存.(比如:hibernate,还分1级和2级缓存) 业务层也可以有缓存(但一般来说,这是一个过程域,不会设缓存). 表现层/数据服务层(传统web的表现层)也可以设置缓存(jsp cache 就是这一层,实现在app server上的缓存机制) 另外Browser也有缓存(如IE)这个大家也都知道(实现在 web server 上的缓存机