fix caching
This commit is contained in:
parent
5dd26db2be
commit
9913b96eb9
Binary file not shown.
Binary file not shown.
22
app.py
22
app.py
@ -13,6 +13,7 @@ app = Flask(__name__)
|
||||
|
||||
# Use a raw string for the UNC path.
|
||||
app.config['MP3_ROOT'] = r'/mp3_root'
|
||||
# app.config['MP3_ROOT'] = r'\\192.168.10.10\docker2\sync-bethaus\syncfiles\folders'
|
||||
app.config['SECRET_KEY'] = os.urandom(24)
|
||||
app.config['ALLOWED_SECRETS'] = {
|
||||
'test': datetime(2026, 3, 31, 23, 59, 59),
|
||||
@ -177,6 +178,7 @@ def serve_file(filename):
|
||||
full_path = os.path.normpath(os.path.join(app.config['MP3_ROOT'], decoded_filename))
|
||||
|
||||
if not os.path.isfile(full_path):
|
||||
app.logger.error(f"File not found: {full_path}")
|
||||
return "File not found", 404
|
||||
|
||||
mime, _ = mimetypes.guess_type(full_path)
|
||||
@ -187,12 +189,14 @@ def serve_file(filename):
|
||||
# Check cache first (using diskcache)
|
||||
cached = cache.get(filename)
|
||||
if cached:
|
||||
app.logger.info(f"Cache hit for {filename}")
|
||||
cached_file_bytes, mime = cached
|
||||
cached_file = io.BytesIO(cached_file_bytes)
|
||||
response = send_file(cached_file, mimetype=mime)
|
||||
else:
|
||||
app.logger.info(f"Cache miss for {filename}")
|
||||
if mime and mime.startswith('image/'):
|
||||
# Image processing
|
||||
# Image processing branch (with caching)
|
||||
try:
|
||||
with Image.open(full_path) as img:
|
||||
img.thumbnail((1200, 1200))
|
||||
@ -202,16 +206,24 @@ def serve_file(filename):
|
||||
cache.set(filename, (img_bytes, mime))
|
||||
response = send_file(io.BytesIO(img_bytes), mimetype=mime)
|
||||
except Exception as e:
|
||||
app.logger.error(f"Image processing failed: {e}")
|
||||
app.logger.error(f"Image processing failed for {filename}: {e}")
|
||||
abort(500)
|
||||
else:
|
||||
# Other file types
|
||||
response = send_file(full_path, mimetype=mime)
|
||||
# Cache non-image files: read bytes and cache
|
||||
try:
|
||||
with open(full_path, 'rb') as f:
|
||||
file_bytes = f.read()
|
||||
cache.set(filename, (file_bytes, mime))
|
||||
response = send_file(io.BytesIO(file_bytes), mimetype=mime)
|
||||
except Exception as e:
|
||||
app.logger.error(f"Failed to read file {filename}: {e}")
|
||||
abort(500)
|
||||
|
||||
# Set Cache-Control header (browser caching for 1 day)
|
||||
response.headers['Cache-Control'] = 'public, max-age=86400' # 1 day
|
||||
response.headers['Cache-Control'] = 'public, max-age=86400'
|
||||
return response
|
||||
|
||||
|
||||
@app.route("/transcript/<path:filename>")
|
||||
@require_secret
|
||||
def get_transcript(filename):
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user