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>
59 lines
1.9 KiB
Elixir
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
|