搭建本地服务器验证iOS系统浏览器图片缓存问题

作为客户端开发,经常需要验证服务端数据改变后本地app的行为,就拿最近遇到的一个问题:webview打开的网页页面,后台更新图片后,webview打开后还是之前的页面,图片没有更新,纳尼!我得自己验证下,说干就干,但是怎么替换图片然后验证呢,总不能每次都找后台同学去换图片,还是得自己想办法,二话不说就搞起:

1.搭建本地服务器:

Mac默认安装了Apache的,因此只需要打开Terminal,启动服务:

//开启apache:         sudo apachectl start

//重启apache:         sudo apachectl restart

//关闭apache:          sudo apachectl stop

然后在浏览器里输入localhost或者localhost:80(注意:不要输入localhost:8080),如果出现如下提示,则证明启动成功。(注意:如果没有用命令启动,直接键入localhost:80也会出现it works!,但是服务其实是没有启动,这点需要注意下)

2.部署本地网页资源:

Apache存放资源的路径是:/Library/WebServer/Documents,把自己的网页和资源放进去就可以打开了。本地apache服务器上的资源目录如下:

3.创建工程项目进行测试:

为了简单起见,我只写一个简单的first.html文件,该文件中有个image标签;iOS工程直接xcode创建即可,需要查看工程的我在后面打包上传了工程,该工程有两个页面:

页面一:只有一个button


页面二:一个webview控件,一个wkwebview控件


4.开始测试:

关于解决网页缓存问题,具体操作方式参见www.zhihu.com/question/27040218,通过meta标签修改html文件的方式不能保证所有的浏览器都没问题,不是全面的解决方案;通过对图片文件做版本控制的方法也能解决问题,但是需要后台实时变更图片文件名称,也不太完美,秉承能自己搞定的问题就不麻烦别人的原则,这里从ios端入手解决。

1)尝试1:代码如下

修改apache中的图片资源,发现确实是图片还是之前的图片。

2)尝试2:代码如下

修改apache中的图片资源,发现图片可以实时更新。问题解决!!!好开心是不是~



总结:通过设置webview不读缓存可以解决缓存不能及时更新的问题,对于简单页面来说可以这样使用;但是对于复杂的页面,每次进入页面都要重新加载数据,用户体验可能不好。最彻底的解决办法还是需要在h5页面对资源做版本控制,这样在每次更新资源的时候,都能第一时间来加载最新资源。

最后上传下xcode工程。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,638评论 25 708
  • 如果你使用的是mac 系统,很荣幸的告诉你的系统自带Apache服务器,查看自己当前系统下是否安装好了该服务器,输...
    gogoingmonkey阅读 1,914评论 0 1
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,009评论 19 139
  • 这是一场属于我的雨 这雨滴夹杂着我的归意 我想淋淋这场雨 我想借助这雨淋淋我的无能为力 淋着人生梦 希望淋醒梦中的...
    情魔七殇阅读 153评论 1 0
  • 用在某个瞬间,看到某人,感觉认识很久,可是仔细思索自己认识的人里好像没有
    一方01阅读 106评论 0 0