Russian Qt Forum
Ноябрь 23, 2024, 08:46
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Работа с сетью
>
создание своего кешировшика на основе QAbstractNetworkCache
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: создание своего кешировшика на основе QAbstractNetworkCache (Прочитано 5715 раз)
ieroglif
Гость
создание своего кешировшика на основе QAbstractNetworkCache
«
:
Июнь 23, 2009, 13:36 »
в упор не понимаю как оно должно работать
по идее вначале вызывается ::metaData(QUrl) которая должна вернуть валидный QNetworkCacheMetaData
вот никак не могу понять - что же это такое? как его сформировать валидным.
и почему-то тестируя встроенный QNetworkDiskCache совсем не вижу что бы он хоть раз вернул валидный ответ.
сначала идут к нему запросы по урлам картинок - он говорит что всё не валидно и я вижу запросы в инет (проксю себе поставил для мониторинга)
страница загружается и он делает кучу своих кешированных файлов.
но больше к нему обращений нет (по функциям смотрю.. у меня в каждую qDebug засунут), а при обновлении страницы запроса в инет тоже нет - значит картинки всё же кешируются.
но на каком уровне - не понимаю.
и не понимаю как мне заставить их закешироваться на диске.
если кто поделится простым примером и каким-то чтивом (кроме оф манов - я их уже вдоль и поперёк) - буду счастлив.
Записан
ритт
Гость
Re: создание своего кешировшика на основе QAbstractNetworkCache
«
Ответ #1 :
Июнь 23, 2009, 14:04 »
я ещё в QNetwork*Cache* не вникал и советом пока помочь не погу...
но всё-равно, обрисуй задачу? т.е. чего ты хочешь добиться собственным кешером?
Записан
ieroglif
Гость
Re: создание своего кешировшика на основе QAbstractNetworkCache
«
Ответ #2 :
Июнь 23, 2009, 14:22 »
задача такова:
есть QWebView которая отображается хтмл генерящийся программкой.
но в этом хтмле могут юзаться элементы из интернета (картинки, анимашки, может флеш), который и будет оттуда подгружаться.
вот хочется что бы подгружался такой внешний элемент только один раз, кешировался на диске (может в последствии в базаде) и больше к инету по этому поводу обращений бы не требовалось (ну или было бы минимальным.. раз в полгода проверить обновление).
причины - да любые.. начать хотя бы с того что у меня сейчас жопорез и экономия канала и трафика будет для меня большим плюсом. (ради которого, вообще то, всё и затевается)
самым логичным мне видится кеширование через уже созданный для этого механизм - QAbstractNetworkCache.
есть другой вариант - в QNetworkAccessManager отлавливать запросы, проверять наличие сохранённого файла по этому запросу, если файла нет, то в инет, и сохраняем на будущее, а если есть, то сформировать QNetworkReply правильный и сразу его отдать.
правда тут уже тоже опасаюсь кучи подводных бочек, начиная от "правильного сформированного QNetworkReplay и продолжая уже самим манагером.. уверен что в нём тоже не всё так тупо происходит и надо эмитить кучу сигналов...
есть ещё вариант сделать свою проксю, которую повесить внутрь проги, и перенаправлять подобные запросы ей, и уж она будет всё кешировать подгружать и т.д... но это уже вообще какой-то изврат, хоть и работать будет (и навыки по написанию кеширующей прокси на Qt у меня уже в загашнике лежат).
есть ещё вариант - при формировании хтмл отсматривать в нём необходимые для кеширования элементы и подменять их пути на локальные версии.
но тут опять - проверяй "а есть ли у меня на харде?", закачивай и т.д., подменять сам хтмл - это уже как-то не хорошо, в общем...
с какой радости механизм создания хтмл должен думать о том - а есть ли оно у меня или нет?.. это не его задача.
разброс кода получается и это мне не нравится. хотя вариант тоже рабочий.
так что самым логичным мне кажется понять как работает QNetwork*Cache и написать кешировшик =)
Записан
ритт
Гость
Re: создание своего кешировшика на основе QAbstractNetworkCache
«
Ответ #3 :
Июнь 23, 2009, 15:01 »
а QNetworkDiskCache (
http://doc.trolltech.com/main-snapshot/qnetworkdiskcache.html
) - это разве не то?
или это будет какой-то особенный кеш?
в любом случае, полагаю, нужно начать с ознакомления с сорцами QNetworkDiskCache...
Записан
ieroglif
Гость
Re: создание своего кешировшика на основе QAbstractNetworkCache
«
Ответ #4 :
Июнь 23, 2009, 15:26 »
QNetworkDiskCache по докам то.
но на практике он почему-то не хочет при каждом новом запуске пользоваться кешем. опять перезакачивает.
Записан
ритт
Гость
Re: создание своего кешировшика на основе QAbstractNetworkCache
«
Ответ #5 :
Июнь 23, 2009, 15:44 »
попробуй из апстрима - сравнительно недавно там что-то исправляли в подсистеме кеширования
Записан
ieroglif
Гость
Re: создание своего кешировшика на основе QAbstractNetworkCache
«
Ответ #6 :
Июнь 23, 2009, 15:57 »
извиняюсь, откуда?
Записан
ритт
Гость
Re: создание своего кешировшика на основе QAbstractNetworkCache
«
Ответ #7 :
Июнь 23, 2009, 17:08 »
Цитата: ieroglif от Июнь 23, 2009, 15:57
извиняюсь, откуда?
http://qt.gitorious.org/qt/qt
Записан
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...