:lightning: CDN option

This commit is contained in:
mi
2025-11-15 21:24:44 +10:00
parent 6b3d446207
commit 0381908610
8 changed files with 154 additions and 71 deletions

21
app.py
View File

@@ -7,7 +7,7 @@ import logging
from datetime import datetime
from flask import Flask, render_template, abort, jsonify, request
from comics_data import (
COMICS, COMIC_NAME, COPYRIGHT_NAME, SITE_URL, FULL_WIDTH_DEFAULT, PLAIN_DEFAULT, LOGO_IMAGE, LOGO_MODE,
COMICS, COMIC_NAME, COPYRIGHT_NAME, SITE_URL, CDN_URL, FULL_WIDTH_DEFAULT, PLAIN_DEFAULT, LOGO_IMAGE, LOGO_MODE,
HEADER_IMAGE, FOOTER_IMAGE, BANNER_IMAGE, COMPACT_FOOTER, ARCHIVE_FULL_WIDTH, SECTIONS_ENABLED,
USE_COMIC_NAV_ICONS, USE_HEADER_NAV_ICONS, USE_FOOTER_SOCIAL_ICONS, USE_SHARE_ICONS, NEWSLETTER_ENABLED,
SOCIAL_INSTAGRAM, SOCIAL_YOUTUBE, SOCIAL_EMAIL, API_SPEC_LINK, EMBED_ENABLED, PERMALINK_ENABLED
@@ -32,6 +32,24 @@ def add_ai_blocking_headers(response):
return response
@app.template_filter('cdn_static')
def cdn_static(filename):
"""Generate URL for static assets with CDN support
When CDN_URL is set, returns CDN URL. Otherwise returns local static URL.
Args:
filename: Path to static file (e.g., 'css/style.css')
Returns:
Full URL to the static asset
"""
from flask import url_for
if CDN_URL:
return f"{CDN_URL}/static/{filename}"
return url_for('static', filename=filename)
@app.context_processor
def inject_global_settings():
"""Make global settings available to all templates"""
@@ -40,6 +58,7 @@ def inject_global_settings():
'copyright_name': COPYRIGHT_NAME if COPYRIGHT_NAME else COMIC_NAME,
'current_year': datetime.now().year,
'site_url': SITE_URL,
'cdn_url': CDN_URL,
'logo_image': LOGO_IMAGE,
'logo_mode': LOGO_MODE,
'header_image': HEADER_IMAGE,