tengo el siguiente controlador que devuelve una lista de etiquetas cuando se recibe una solicitud HTTP a/etiquetasresultado JSON en Rails
class TagsController < ApplicationController
caches_page :index
def index
respond_to do |format|
format.json {
render :json => Tag.all(:order => "name").to_json
}
end
end
end
estoy notando que cada vez que se hace una petición a/etiquetas, Rails está generando un archivo de caché en /public/tags.json. Sin embargo, nunca parece usar este archivo de caché. En su lugar, siempre se ejecuta la consulta SQL para recuperar las etiquetas:
Started GET "/tags" for 127.0.0.1 at 2011-06-15 08:27:29 -0700
Processing by TagsController#index as JSON
Tag Load (0.7ms) SELECT "tags".* FROM "tags" ORDER BY name
Write page <project root path>/public/tags.json (0.3ms)
Completed 200 OK in 35ms (Views: 1.1ms | ActiveRecord: 0.7ms)
¿Por qué no se raíles usando el archivo de caché que se está generando? ¿Es porque la solicitud es para/tags y no /tags.json?
Hmm, lo he intentado y todavía está exhibiendo el mismo comportamiento (ahorro de /public/tags.json). –
y la forma en que funciona el caché de páginas solo genera páginas estáticas, en público, que son tomadas por el servidor web sin tocar los rieles. Entonces debes marchitarse para obtener los rieles y guardarlos con un nombre diferente, o conseguir que tu servidor web (Apache o lo que sea) tenga un alias para ese archivo. O haga que el cliente solicite la página con extensión. Al menos creo que algo así debería funcionar – loosecannon
si solo responde en json, saca el bloque responder_, eso es lo que está añadiendo el .json posiblemente – loosecannon