From 72b37450b4b82d84d71b7d7b59285978937309a2 Mon Sep 17 00:00:00 2001 From: Nimetu Date: Thu, 20 Apr 2017 15:37:47 +0300 Subject: [PATCH] Changed: Use basic cache expire for web images --HG-- branch : develop --- code/nel/src/gui/group_html.cpp | 72 +++++++++++++++++++-------------- 1 file changed, 41 insertions(+), 31 deletions(-) diff --git a/code/nel/src/gui/group_html.cpp b/code/nel/src/gui/group_html.cpp index 418704262..319feae92 100644 --- a/code/nel/src/gui/group_html.cpp +++ b/code/nel/src/gui/group_html.cpp @@ -274,6 +274,21 @@ namespace NLGUI return false; } + // TODO: replace with expire and etag headers + if (CFile::fileExists(download.dest)) + { + time_t currentTime; + time(¤tTime); + uint32 mtime = CFile::getFileModificationDate(download.dest); + if (mtime + 3600 > currentTime) + { + #ifdef LOG_DL + nlwarning("Cache for (%s) is not expired (%s, age:%d)", download.url.c_str(), download.dest.c_str(), currentTime - mtime); + #endif + return false; + } + } + string tmpdest = download.dest + ".tmp"; // erase the tmp file if exists @@ -344,30 +359,22 @@ namespace NLGUI nlwarning("add to download '%s' dest '%s' img %p", finalUrl.c_str(), dest.c_str(), img); #endif - if (!NLMISC::CFile::fileExists(dest)) - { - Curls.push_back(CDataDownload(finalUrl, dest, ImgType, img, "", "", style)); - if (Curls.size() < options.curlMaxConnections) { - if (!startCurlDownload(Curls.back())) - { - Curls.pop_back(); - return; - } - - RunningCurls++; - #ifdef LOG_DL - nlwarning("(%s) adding handle %x, %d curls", _Id.c_str(), Curls.back().curl, Curls.size()); - } - else + Curls.push_back(CDataDownload(finalUrl, dest, ImgType, img, "", "", style)); + if (Curls.size() < options.curlMaxConnections) { + if (!startCurlDownload(Curls.back())) { - nlwarning("(%s) download queued, %d curls", _Id.c_str(), Curls.size()); - #endif + Curls.pop_back(); + return; } + + RunningCurls++; + #ifdef LOG_DL + nlwarning("(%s) adding handle %x, %d curls", _Id.c_str(), Curls.back().curl, Curls.size()); } else { - setImage(img, dest); - setImageSize(img, style); + nlwarning("(%s) download queued, %d curls", _Id.c_str(), Curls.size()); + #endif } } @@ -607,6 +614,9 @@ namespace NLGUI CBitmap::loadSize(tmpfile, w, h); if (w != 0 && h != 0) { + if (CFile::fileExists(it->dest)) + CFile::deleteFile(it->dest); + CFile::moveFile(it->dest, tmpfile); for(uint i = 0; i < it->imgs.size(); i++) { @@ -1572,7 +1582,7 @@ namespace NLGUI { // Get the option to reload (class==reload) bool reloadImg = false; - + string styleString; if (present[MY_HTML_IMG_STYLE] && value[MY_HTML_IMG_STYLE]) styleString = value[MY_HTML_IMG_STYLE]; @@ -1586,7 +1596,7 @@ namespace NLGUI if (it != styles.end() && (*it).second == "1") reloadImg = true; } - + addImage (value[MY_HTML_IMG_SRC], globalColor, reloadImg, style); } } @@ -4225,7 +4235,11 @@ namespace NLGUI // 2/ if it doesn't work, try to load the image in cache // image = localImageName(img); - if (!reloadImg && lookupLocalFile (finalUrl, image.c_str(), false)) + + if (reloadImg && CFile::fileExists(image)) + CFile::deleteFile(image); + + if (lookupLocalFile (finalUrl, image.c_str(), false)) { // don't display image that are not power of 2 try @@ -4243,22 +4257,18 @@ namespace NLGUI } else { - // - // 3/ if it doesn't work, display a placeholder and ask to dl the image into the cache - // - if (reloadImg && CFile::fileExists(image)) - CFile::deleteFile(image); - + // no image in cache image = "web_del.tga"; - addImageDownload(img, newImage, style); } + + addImageDownload(img, newImage, style); } newImage->setTexture (image); newImage->setModulateGlobalColor(globalColor); - getParagraph()->addChild(newImage); + getParagraph()->addChild(newImage); paragraphChange (); - + setImageSize(newImage, style); }