simpleshop_theme/lib/simpleshop_theme_web/endpoint.ex
jamey 1f4e938ed1 enable gzip on Plug.Static unconditionally
Plug.Static with gzip: true serves .gz files when they exist
(created by phx.digest) and falls back to uncompressed otherwise.
The previous code_reloading? guard was needlessly conservative —
in dev without digested assets, there are no .gz files so nothing
changes. With the lighthouse task building prod assets, this gives
realistic transfer sizes (42KB JS vs 135KB).

Mobile lighthouse scores jump from 95-97 to 99-100.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-08 18:23:53 +00:00

59 lines
1.9 KiB
Elixir

defmodule SimpleshopThemeWeb.Endpoint do
use Phoenix.Endpoint, otp_app: :simpleshop_theme
# The session will be stored in the cookie and signed,
# this means its contents can be read but not tampered with.
# Set :encryption_salt if you would also like to encrypt it.
@session_options [
store: :cookie,
key: "_simpleshop_theme_key",
signing_salt: "JNwRcD7y",
same_site: "Lax"
]
socket "/live", Phoenix.LiveView.Socket,
websocket: [connect_info: [session: @session_options]],
longpoll: [connect_info: [session: @session_options]]
# Serve at "/" the static files from "priv/static" directory.
# gzip is always enabled — Plug.Static serves .gz files when they exist
# (created by `mix phx.digest`), falls back to uncompressed otherwise.
plug Plug.Static,
at: "/",
from: :simpleshop_theme,
gzip: true,
only: SimpleshopThemeWeb.static_paths(),
cache_control_for_etags: "public, max-age=31536000, immutable"
if Code.ensure_loaded?(Tidewave) do
plug Tidewave, allow_remote_access: true
end
# Code reloading can be explicitly enabled under the
# :code_reloader configuration of your endpoint.
if code_reloading? do
socket "/phoenix/live_reload/socket", Phoenix.LiveReloader.Socket
plug Phoenix.LiveReloader
plug Phoenix.CodeReloader
plug Phoenix.Ecto.CheckRepoStatus, otp_app: :simpleshop_theme
end
plug Phoenix.LiveDashboard.RequestLogger,
param_key: "request_logger",
cookie_key: "request_logger"
plug Plug.RequestId
plug Plug.Telemetry, event_prefix: [:phoenix, :endpoint]
plug Plug.Parsers,
parsers: [:urlencoded, :multipart, :json],
pass: ["*/*"],
body_reader: {SimpleshopThemeWeb.Plugs.CacheRawBody, :read_body, []},
json_decoder: Phoenix.json_library()
plug Plug.MethodOverride
plug Plug.Head
plug Plug.Session, @session_options
plug SimpleshopThemeWeb.Router
end