我有一个带有sitemap.xml的应用程序。我需要每天动态修改一次。我知道如何为它生成内容。但是,我怎样才能用新生成的内容替换(!)我当前的sitempa.xml,或者更确切地说是其内容? 如果它是一个rails应用程序,我只是替换它的内容并且它可以工作,但对于凤凰它是不同的。
我提供的sitemap.xml代码是标准代码:
defmodule MyApp.Endpoint do
# ................
# Serve at "/" the static files from "priv/static" directory.
#
# You should set gzip to true if you are running phoenix.digest
# when deploying your static files in production.
plug Plug.Static,
at: "/", from: :my_app, gzip: false,
only: ~w(css fonts images js favicon.ico robots.txt sitemap.xml)
我应该为" sitemap.xml"创建一个特殊的路由/操作。并在控制器中提供服务?
答案 0 :(得分:3)
我从控制器/操作中提供它并将值缓存在内存中24小时。
# Router
get "/sitemap.xml", SitemapController, :index
# Controller
defmodule MyApp.SitemapController do
use MyApp.Web, :controller
def index(conn, _params) do
xml = ... # generate the sitemap / fetch from cache
conn
|> put_resp_header("content-type", "application/xml")
|> send_resp(200, xml)
end
end