From f0254b3b778ed197995594142bbcbc21c97e7a54 Mon Sep 17 00:00:00 2001 From: realaravinth Date: Tue, 4 May 2021 23:27:58 +0530 Subject: [PATCH] static assets caching --- .github/workflows/linux.yml | 12 ++++-------- src/docs.rs | 8 ++++++-- src/main.rs | 3 ++- src/static_assets.rs | 9 +++++++-- templates/panel/index.html | 12 ++++-------- 5 files changed, 23 insertions(+), 21 deletions(-) diff --git a/.github/workflows/linux.yml b/.github/workflows/linux.yml index e8b9d4fa..b4aa4649 100644 --- a/.github/workflows/linux.yml +++ b/.github/workflows/linux.yml @@ -7,7 +7,6 @@ on: branches: - master - jobs: build_and_test: strategy: @@ -21,7 +20,6 @@ jobs: runs-on: ubuntu-latest services: - postgres: image: postgres env: @@ -80,7 +78,6 @@ jobs: env: DATABASE_URL: postgres://postgres:password@localhost:5432/postgres - - name: tests uses: actions-rs/cargo@v1 timeout-minutes: 40 @@ -90,7 +87,6 @@ jobs: env: DATABASE_URL: postgres://postgres:password@localhost:5432/postgres - - name: Generate coverage file if: matrix.version == 'stable' && (github.ref == 'refs/heads/master' || github.event_name == 'pull_request') uses: actions-rs/tarpaulin@v0.1 @@ -102,8 +98,8 @@ jobs: # GIT_HASH is dummy value. I guess build.rs is skipped in tarpaulin # execution so this value is required for preventing meta tests from # panicking - GIT_HASH: 8e77345f1597e40c2e266cb4e6dee74888918a61 - OPEN_API_DOCS: 8e77345f1597e40c2e266cb4e6dee74888918a61 + GIT_HASH: 8e77345f1597e40c2e266cb4e6dee74888918a61 + OPEN_API_DOCS: 8e77345f1597e40c2e266cb4e6dee74888918a61 CACHE_BUSTER_FILE_MAP: '{"map":{"./static/bundle/main.js":"./prod/bundle/main.1417115E59909BE0A01040A45A398ADB09D928DF89CCF038FA44B14850442096.js"},"base_dir":"./prod"}' - name: Upload to Codecov @@ -120,8 +116,8 @@ jobs: args: --no-deps --workspace --all-features env: DATABASE_URL: postgres://postgres:password@localhost:5432/postgres - GIT_HASH: 8e77345f1597e40c2e266cb4e6dee74888918a61 # dummy value - OPEN_API_DOCS: 8e77345f1597e40c2e266cb4e6dee74888918a61 + GIT_HASH: 8e77345f1597e40c2e266cb4e6dee74888918a61 # dummy value + OPEN_API_DOCS: 8e77345f1597e40c2e266cb4e6dee74888918a61 - name: Deploy to GitHub Pages if: matrix.version == 'stable' && (github.repository == 'mCaptcha/guard') diff --git a/src/docs.rs b/src/docs.rs index 3876ec96..c00b892d 100644 --- a/src/docs.rs +++ b/src/docs.rs @@ -14,13 +14,14 @@ * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . */ +use std::borrow::Cow; use actix_web::body::Body; -use actix_web::{web, HttpResponse, Responder}; +use actix_web::{http::header, web, HttpResponse, Responder}; use mime_guess::from_path; use rust_embed::RustEmbed; -use std::borrow::Cow; +use crate::CACHE_AGE; pub const DOCS: routes::Docs = routes::Docs::new(); @@ -62,6 +63,9 @@ pub fn handle_embedded_file(path: &str) -> HttpResponse { Cow::Owned(bytes) => bytes.into(), }; HttpResponse::Ok() + .set(header::CacheControl(vec![header::CacheDirective::MaxAge( + CACHE_AGE, + )])) .content_type(from_path(path).first_or_octet_stream().as_ref()) .body(body) } diff --git a/src/main.rs b/src/main.rs index ef7e39db..0bcfe368 100644 --- a/src/main.rs +++ b/src/main.rs @@ -61,9 +61,10 @@ pub static VERSION: &str = env!("CARGO_PKG_VERSION"); pub static PKG_NAME: &str = env!("CARGO_PKG_NAME"); pub static PKG_DESCRIPTION: &str = env!("CARGO_PKG_DESCRIPTION"); pub static PKG_HOMEPAGE: &str = env!("CARGO_PKG_HOMEPAGE"); - pub static VERIFICATION_PATH: &str = "mcaptchaVerificationChallenge.json"; +pub const CACHE_AGE: u32 = 365 * 24 * 3600; + #[cfg(not(tarpaulin_include))] #[actix_web::main] async fn main() -> std::io::Result<()> { diff --git a/src/static_assets.rs b/src/static_assets.rs index 9eff5782..2d197acb 100644 --- a/src/static_assets.rs +++ b/src/static_assets.rs @@ -14,14 +14,15 @@ * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . */ +use std::borrow::Cow; use actix_web::body::Body; -use actix_web::{get, web, HttpResponse, Responder}; +use actix_web::{get, http::header, web, HttpResponse, Responder}; use cache_buster::Files; use mime_guess::from_path; use rust_embed::RustEmbed; -use std::borrow::Cow; +use crate::CACHE_AGE; #[derive(RustEmbed)] #[folder = "static/"] @@ -34,7 +35,11 @@ pub fn handle_embedded_file(path: &str) -> HttpResponse { Cow::Borrowed(bytes) => bytes.into(), Cow::Owned(bytes) => bytes.into(), }; + HttpResponse::Ok() + .set(header::CacheControl(vec![header::CacheDirective::MaxAge( + CACHE_AGE, + )])) .content_type(from_path(path).first_or_octet_stream().as_ref()) .body(body) } diff --git a/templates/panel/index.html b/templates/panel/index.html index 79fed4f6..d1e90279 100644 --- a/templates/panel/index.html +++ b/templates/panel/index.html @@ -1,14 +1,10 @@ -<. include!("../components/headers.html"); .> <. include!("./header/index.html"); -.> - +<. include!("../components/headers.html"); .> +<. include!("./header/index.html"); .>
- <. include!("./taskbar/index.html"); .> <. - include!("./help-banner/index.html"); .> - + <. include!("./taskbar/index.html"); .> + <. include!("./help-banner/index.html"); .>
-
-
<. include!("../components/footers.html"); .>