服务器同名每日更新PDF打开后显示旧文件问题求助
解决服务器PDF文件更新后仍显示旧内容的问题
这个问题我做项目时也碰到过,核心原因是系统或者你调用的PDF查看应用会缓存远程URL对应的文件——因为你的PDF文件名始终没变,应用会默认认为这是同一个资源,直接读取本地缓存的旧文件,根本不会去服务器请求新的版本。
给你几个亲测有效的解决办法,按推荐程度排序:
给URL添加随机查询参数(最推荐,代码改动小)
每次请求时给PDF的URL末尾加一个唯一的参数(比如当前时间戳或者版本号),这样客户端会认为这是一个全新的URL,不会使用缓存。修改你的代码如下:// 拼接带时间戳的URL,确保每次请求的地址唯一 String pdfUrl = Constants.PDF_ROOT_URL + "/portfolio/2.pdf?timestamp=" + System.currentTimeMillis(); Intent myIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(pdfUrl)); startActivity(myIntent);不用担心服务器会识别不了这个URL,因为服务器会自动忽略额外的查询参数,依然返回目标PDF文件,但客户端的缓存机制会被完美绕过。
服务器端设置禁用缓存的响应头
如果你有权限配置服务器,可以给这个PDF文件添加缓存控制的响应头,强制客户端每次都从服务器获取最新内容。比如在服务器的配置里给该文件设置:Cache-Control: no-cache, no-store, must-revalidate Pragma: no-cache Expires: 0这个方法从根源解决缓存问题,但需要服务器配置的权限,适合能控制服务器的场景。
引导用户手动清除PDF应用缓存(备选方案)
这个方法体验比较差,需要用户自己去系统设置里找到对应的PDF查看应用,清除它的缓存和数据。但作为临时应急方案可以提一下,不过不推荐作为主要解决手段。
内容的提问来源于stack exchange,提问作者Frank Fredrick
相关产品推荐
相关产品推荐

