Skip to content

Commit 257b31e

Browse files
committed
qgis server: initialize network cache (fixes #7204)
1 parent 1b63204 commit 257b31e

File tree

2 files changed

+37
-15
lines changed

2 files changed

+37
-15
lines changed

src/mapserver/qgis_map_serv.cpp

+19
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,10 @@ map service syntax for SOAP/HTTP POST
3232
#include "qgspallabeling.h"
3333
#include "qgsprojectparser.h"
3434
#include "qgssldparser.h"
35+
#include "qgsnetworkaccessmanager.h"
36+
3537
#include <QDomDocument>
38+
#include <QNetworkDiskCache>
3639
#include <QImage>
3740
#include <QSettings>
3841
#include <QDateTime>
@@ -185,6 +188,22 @@ int main( int argc, char * argv[] )
185188
QgsApplication::skipGdalDriver( "JP2ECW" );
186189
#endif
187190

191+
QSettings settings;
192+
193+
QgsNetworkAccessManager *nam = QgsNetworkAccessManager::instance();
194+
QNetworkDiskCache *cache = new QNetworkDiskCache( 0 );
195+
196+
QString cacheDirectory = settings.value( "cache/directory", QgsApplication::qgisSettingsDirPath() + "cache" ).toString();
197+
qint64 cacheSize = settings.value( "cache/size", 50 * 1024 * 1024 ).toULongLong();
198+
QgsDebugMsg( QString( "setCacheDirectory: %1" ).arg( cacheDirectory ) );
199+
QgsDebugMsg( QString( "setMaximumCacheSize: %1" ).arg( cacheSize ) );
200+
cache->setCacheDirectory( cacheDirectory );
201+
cache->setMaximumCacheSize( cacheSize );
202+
QgsDebugMsg( QString( "cacheDirectory: %1" ).arg( cache->cacheDirectory() ) );
203+
QgsDebugMsg( QString( "maximumCacheSize: %1" ).arg( cache->maximumCacheSize() ) );
204+
205+
nam->setCache( cache );
206+
188207
QDomImplementation::setInvalidDataPolicy( QDomImplementation::DropInvalidChars );
189208

190209
// Instantiate the plugin directory so that providers are loaded

src/providers/wms/qgswmsprovider.cpp

+18-15
Original file line numberDiff line numberDiff line change
@@ -1055,24 +1055,27 @@ void QgsWmsProvider::tileReplyFinished()
10551055
}
10561056
#endif
10571057

1058-
QNetworkCacheMetaData cmd = QgsNetworkAccessManager::instance()->cache()->metaData( reply->request().url() );
1059-
1060-
QNetworkCacheMetaData::RawHeaderList hl;
1061-
foreach ( const QNetworkCacheMetaData::RawHeader &h, cmd.rawHeaders() )
1058+
if ( QgsNetworkAccessManager::instance()->cache() )
10621059
{
1063-
if ( h.first != "Cache-Control" )
1064-
hl.append( h );
1065-
}
1066-
cmd.setRawHeaders( hl );
1060+
QNetworkCacheMetaData cmd = QgsNetworkAccessManager::instance()->cache()->metaData( reply->request().url() );
10671061

1068-
QgsDebugMsg( QString( "expirationDate:%1" ).arg( cmd.expirationDate().toString() ) );
1069-
if ( cmd.expirationDate().isNull() )
1070-
{
1071-
QSettings s;
1072-
cmd.setExpirationDate( QDateTime::currentDateTime().addSecs( s.value( "/qgis/defaultTileExpiry", "24" ).toInt() * 60 * 60 ) );
1073-
}
1062+
QNetworkCacheMetaData::RawHeaderList hl;
1063+
foreach ( const QNetworkCacheMetaData::RawHeader &h, cmd.rawHeaders() )
1064+
{
1065+
if ( h.first != "Cache-Control" )
1066+
hl.append( h );
1067+
}
1068+
cmd.setRawHeaders( hl );
10741069

1075-
QgsNetworkAccessManager::instance()->cache()->updateMetaData( cmd );
1070+
QgsDebugMsg( QString( "expirationDate:%1" ).arg( cmd.expirationDate().toString() ) );
1071+
if ( cmd.expirationDate().isNull() )
1072+
{
1073+
QSettings s;
1074+
cmd.setExpirationDate( QDateTime::currentDateTime().addSecs( s.value( "/qgis/defaultTileExpiry", "24" ).toInt() * 60 * 60 ) );
1075+
}
1076+
1077+
QgsNetworkAccessManager::instance()->cache()->updateMetaData( cmd );
1078+
}
10761079

10771080
int tileReqNo = reply->request().attribute( static_cast<QNetworkRequest::Attribute>( QNetworkRequest::User + 0 ) ).toInt();
10781081
int tileNo = reply->request().attribute( static_cast<QNetworkRequest::Attribute>( QNetworkRequest::User + 1 ) ).toInt();

0 commit comments

Comments
 (0)