当前位置: 首页 > news >正文

WebView加载URL时添加时间戳可以防止缓存问题方案

在WebView加载URL时添加时间戳可以防止缓存问题,以下是实现方法:

1.对于加载网页URL的情况:
 
  1. MainActivity.java
// ... existing code ...

String originalUrl = "https://example.com/page.html";
String urlWithTimestamp = originalUrl + (originalUrl.contains("?") ? "&" : "?") + "t=" + System.currentTimeMillis();
webView.loadUrl(urlWithTimestamp);

// ... existing code ...
2.对于加载本地HTML文件的情况:

MainActivity.java

// ... existing code ...

String filePath = "file:///android_asset/index.html";
String htmlContent = getHtmlContentFromAsset("index.html"); // 需要实现这个方法
htmlContent = injectTimestamp(htmlContent);
webView.loadDataWithBaseURL(filePath, htmlContent, "text/html", "UTF-8", null);

// ... existing code ...

3.辅助方法实现:

private String getHtmlContentFromAsset(String filename) {
    try {
        InputStream is = getAssets().open(filename);
        byte[] buffer = new byte[is.available()];
        is.read(buffer);
        is.close();
        return new String(buffer);
    } catch (IOException e) {
        e.printStackTrace();
        return "";
    }
}

private String injectTimestamp(String html) {
    return html.replace("</body>", 
        "<script>document.write('<input type=\"hidden\" name=\"t\" value=\"" + 
        System.currentTimeMillis() + "\">')</script></body>");
}

4.如果使用WebViewClient统一处理:
 

MainActivity.java

webView.setWebViewClient(new WebViewClient() {
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        if(!url.contains("t=")) {
            String newUrl = url + (url.contains("?") ? "&" : "?") + "t=" + System.currentTimeMillis();
            view.loadUrl(newUrl);
            return true;
        }
        return false;
    }
});

注意事项:

  1. 时间戳参数名建议使用"t"或"timestamp"等简短名称
  2. 对于重要页面,建议将时间戳放在URL参数中(?t=xxx)
  3. 本地HTML注入的时间戳会在每次加载时变化

相关文章:

  • xp系统做局域网内网站夸克搜索引擎入口
  • 做背景音乐的版权网站网络营销策略有哪些
  • 济南网站建设流程网站优化推广外包
  • 怎么建电子商务网站seo快速优化技术
  • 许昌哪里做网站企业软文
  • 购买一个网站需要多少钱?关联词有哪些
  • ceph数据迁移数据迁移与bacula配置调整优化实战
  • WindTerm快速更改主密码
  • Nextjs15 实战 - React Notes 项目初始化
  • Java学习总结-字符流
  • 通过案例初步认识机器学习
  • Linux 基础入门操作 第九章 进程之间通讯信号量 2
  • Scala(五)
  • 【Anaconda环境绑定指南】3步将自定义环境注入Jupyter Notebook 内核 | 附详细命令与演示
  • [Redis]Redis学习开篇概述
  • Linux 容器环境磁盘空间不足问题及解决方案
  • 最新源支付V7开源1.9.9版
  • 零基础使用AI从0到1开发一个微信小程序
  • KisFlow-Golang流式实时计算案例(四)-KisFlow在消息队列MQ中的应用
  • 讲解机器学习中的 K-均值聚类算法及其优缺点
  • 哈希表+前缀和+滑动窗口高效查找——蓝桥杯例题
  • 【算法】反转单向链表 链表和数组的区分 时间复杂度
  • 野指针成因及避免方法
  • 制造OA系统怎么选?有没有简单易用的?
  • Android Fresco 框架编解码模块源码深度剖析(三)
  • 数据结构与算法面试题精讲)C++版——day4