Pregunta

Yo sé Rails.cache es ActiveSupport::Cache::MemoryStore, y no es seguro para subprocesos.

No entiendo, ¿por qué carriles utilizan una cache de procesos-inseguro como su valor por defecto? ¿Por qué no usar ActiveSupport::Cache::SynchronizedMemoryStore? En mi opinión, en un sitio web, si una caché no es seguro para subprocesos, casi inútil, porque las solicitudes no son manejados en un único hilo.

¿Utiliza Rails.cache en que webapp? ¿Y cómo lo usa?

¿Fue útil?

Solución

El almacenamiento en caché de forma predeterminada en Rails es ActiveSupport::Cache::FileStore, no MemoryStore.

El almacén de memoria es de uso limitado en la práctica, ya que se limita a un único proceso, que hace que sea inútil para aplicaciones Rieles que se implementan utilizando de pasajeros o en un clúster Mongrel en que las solicitudes se manejan en procesos separados, no en hilos separados .

Para pequeñas y medianas aplicaciones es probable que lo hace muy bien con el almacén de archivos por defecto. Si necesita escala más allá de eso, usted debe echar un vistazo a ActiveSupport::Cache::MemCacheStore.

Otros consejos

La mayor parte del escenario de implementación de los carriles son en realidad de un solo subproceso. Concurrencia se consigue mediante el desove múltiples procesos, ya sea de forma automática o de antemano. Para muchas personas, hilos de seguridad no importa mucho.

Opciones de subprocesos múltiples sí existen (especialmente con JRuby), por lo que la pregunta sigue siendo válida. Por lo que en los carriles 3, el viejo ActiveSupport::Cache::MemoryStore ha sido eliminado y reemplazado con ActiveSupport::Cache::SynchronizedMemoryStore, por lo que es seguro para subprocesos por defecto.

Si necesita el hilo de seguridad en unos rieles 2 aplicación, poner el siguiente en algún lugar de su entorno.

ActionController::Base.cache_store = :synchronized_memory_store

El valor predeterminado Rieles caché (ActiveSupport :: Cache MemoryStore) es seguro para subprocesos como rieles de la versión 3.1: http://api.rubyonrails.org/v3.1.0/files/activesupport/CHANGELOG.html Como señala Cambios: "Hacer hilo de seguridad por lo que la aplicación de caché predeterminada utilizada por los carriles es seguro thread ".

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top