diff --git a/PageCompiler/doc/PageCompilerUserGuide.page b/PageCompiler/doc/PageCompilerUserGuide.page index f9ccde85f..718deb0cc 100644 --- a/PageCompiler/doc/PageCompilerUserGuide.page +++ b/PageCompiler/doc/PageCompilerUserGuide.page @@ -272,6 +272,11 @@ is actually written to a string stream (<[std::ostringstream]>). Sending of the HTTP response back to the client is deferred to when the page is complete. +!cacheControl + +If set to a non-empty string (e.g., "no-cache, no-store"), adds a "Cache-Control" +header to the response with the given argument as value. + !session (OSP only) For use with the POCO Open Service Platform only. diff --git a/PageCompiler/src/CodeWriter.cpp b/PageCompiler/src/CodeWriter.cpp index ef90633b4..fbb621cfe 100644 --- a/PageCompiler/src/CodeWriter.cpp +++ b/PageCompiler/src/CodeWriter.cpp @@ -311,6 +311,7 @@ void CodeWriter::writeResponse(std::ostream& ostr) { std::string contentType(_page.get("page.contentType", "text/html")); std::string contentLang(_page.get("page.contentLanguage", "")); + std::string cacheControl(_page.get("page.cacheControl", "")); bool buffered(_page.getBool("page.buffered", false)); bool chunked(_page.getBool("page.chunked", !buffered)); bool compressed(_page.getBool("page.compressed", false)); @@ -333,6 +334,10 @@ void CodeWriter::writeResponse(std::ostream& ostr) ostr << "\tbool _compressResponse(request.hasToken(\"Accept-Encoding\", \"gzip\"));\n" << "\tif (_compressResponse) response.set(\"Content-Encoding\", \"gzip\");\n"; } + if (!cacheControl.empty()) + { + ostr << "\tresponse.set(\"Cache-Control\", \"" << cacheControl << "\");\n"; + } ostr << "\n"; }