zoukankan      html  css  js  c++  java
  • QML 开发神奇加成之为网络资源设置本地缓存

    QML 开发神奇加成之为网络资源设置本地缓存

    直接上码:

    #include <QNetworkAccessManager>
    #include <QNetworkDiskCache>
    #include <QStandardPaths>
    #include <QQmlNetworkAccessManagerFactory>
    
    class MyNetworkAccessManagerFactory : public QQmlNetworkAccessManagerFactory
    {
    public:
        virtual QNetworkAccessManager *create(QObject *parent);
    };
    
    QNetworkAccessManager *MyNetworkAccessManagerFactory::create(QObject *parent)
    {
        QNetworkAccessManager *nam = new QNetworkAccessManager(parent);
        QNetworkDiskCache* diskCache = new QNetworkDiskCache(nam);
    
        QString cachePath = QStandardPaths::displayName(QStandardPaths::CacheLocation);
    
        qDebug() << "cache path:" << cachePath;
    
        diskCache->setCacheDirectory(cachePath);
        diskCache->setMaximumCacheSize(100 * 1024 * 1024);   // 这里设置的缓存大小为 100 MB
    
        nam->setCache(diskCache);
    
        return nam;
    }

    然后使用例如以下:

        engine.setNetworkAccessManagerFactory(new MyNetworkAccessManagerFactory);

    然后一些网络图片,在载入前就会訪问本地是否有缓存,假设有,就直接拉取本地。

    注意 XMLHttpRequest 的内部实现是拥有还有一个 NetworkAccessManager,所以这个工厂构建的 NetworkAccessManager 无法对 XMLHttpReuqest 产生作用。

    此外。能够通过使用 QDir 以及 QFile 等文件操作来清空缓存。

    此外提供一个能够统计目录大小的函数:

    #include <QDir>
    
    qint64 dirSize(const QString &path)
    {
        QDir dir(path);
        qint64 size = 0;
        foreach (QFileInfo fileInfo, dir.entryInfoList(QDir::Files)) {
            size += fileInfo.size();
        }
    
        foreach (QString subDir, dir.entryList(QDir::Dirs | QDir::NoDotAndDotDot)) {
            size += dirSize(path + QDir::separator() + subDir);
        }
        return size;
    }
  • 相关阅读:
    CORS跨域资源共享漏洞
    Linux Restricted Shell Bypass
    无情一点并没有错
    [机器学习]numpy broadcast shape 机制
    Chrome和IE的xss过滤器分析总结
    php使用substr中文乱码问题
    mac下自定义伪协议配置
    【转】前端黑魔法之远程控制地址栏
    Windows可信任路径代码执行漏洞
    小记一次mysql启动失败没有日志的处理
  • 原文地址:https://www.cnblogs.com/cynchanpin/p/7207009.html
Copyright © 2011-2022 走看看