Merge pull request #11075 from Chocobo1/cache

Cache and reuse detected MIME type
This commit is contained in:
Mike Tzou 2019-08-15 11:11:40 +08:00 committed by GitHub
commit d639c16f72
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 8 additions and 8 deletions

View file

@ -191,7 +191,7 @@ void WebApplication::sendWebUIFile()
sendFile(localPath);
}
void WebApplication::translateDocument(QString &data)
void WebApplication::translateDocument(QString &data) const
{
const QRegularExpression regex("QBT_TR\\((([^\\)]|\\)(?!QBT_TR))+)\\)QBT_TR\\[CONTEXT=([a-zA-Z_][a-zA-Z0-9_]*)\\]");
@ -368,11 +368,10 @@ void WebApplication::sendFile(const QString &path)
const QDateTime lastModified {QFileInfo(path).lastModified()};
// find translated file in cache
auto it = m_translatedFiles.constFind(path);
if ((it != m_translatedFiles.constEnd()) && (lastModified <= (*it).lastModified)) {
const QString mimeName {QMimeDatabase().mimeTypeForFileNameAndData(path, (*it).data).name()};
print((*it).data, mimeName);
header(Http::HEADER_CACHE_CONTROL, getCachingInterval(mimeName));
const auto it = m_translatedFiles.constFind(path);
if ((it != m_translatedFiles.constEnd()) && (lastModified <= it->lastModified)) {
print(it->data, it->mimeType);
header(Http::HEADER_CACHE_CONTROL, getCachingInterval(it->mimeType));
return;
}
@ -400,7 +399,7 @@ void WebApplication::sendFile(const QString &path)
translateDocument(dataStr);
data = dataStr.toUtf8();
m_translatedFiles[path] = {data, lastModified}; // caching translated file
m_translatedFiles[path] = {data, mimeType.name(), lastModified}; // caching translated file
}
print(data, mimeType.name());

View file

@ -105,7 +105,7 @@ private:
void sendFile(const QString &path);
void sendWebUIFile();
void translateDocument(QString &data);
void translateDocument(QString &data) const;
// Session management
QString generateSid() const;
@ -136,6 +136,7 @@ private:
struct TranslatedFile
{
QByteArray data;
QString mimeType;
QDateTime lastModified;
};
QHash<QString, TranslatedFile> m_translatedFiles;