2009-08-25 11 views
5

Estamos experimentando con la adición de marcas de tiempo a algunas URL para que las cosas se almacenen en caché pero las refresque cuando cambien. Tenemos código que se reduce a esto:¿Qué tan caro es leer las propiedades del archivo? .NET

DateTime ts = File.GetLastWriteTime(absPath); 

donde absPath es un MappedPath de una URL. Por lo tanto, el servidor web comprobará la última hora de escritura de este archivo cada vez que proporcionemos un enlace al archivo. Un poco me da los pelos de punta, ¿o sí?

Respuesta

7

Debe realizar una prueba de rendimiento, pero no disponible. Dudo que sea más costoso que probar la existencia de un archivo (por ejemplo, si es de solo lectura) y ciertamente menos costoso que abrir el archivo.

Si (después de la prueba) se decide que se trata de un problema, también puede almacenar en caché sus llamadas a GetLastWriteTime (por ejemplo, no llamar más de una vez cada 5 segundos para cualquier archivo).

Además, nunca he utilizado, pero si el almacenamiento en caché es una preocupación espero que usted ha considerado delegar su ejecución en cierta especialista como Squid en vez de rodar su propio.

0

Se incurrirá en E/S de disco pequeño adicionales cuando se generan los enlaces. Si crea muchas URL en un corto período de tiempo, esto podría ser un cuello de botella. Nadie puede decir con certeza si esto afectará su escenario: realmente necesita medir y ver si esto va a ser un problema.

0

O si le preocupa, ¿por qué no almacenarlo en caché durante un minuto?

1

Esencialmente, hay tres respuestas a su pregunta de "¿qué tan caro?".

  1. Demasiado caro: lo ha probado y tiene que cambiar algo para que el sistema sea utilizable.
  2. Aceptable: lo ha probado y no es bueno, pero es lo suficientemente rápido como para usar
  3. Bastante barato: lo ha probado y no tiene un impacto notable en el rendimiento.

Realmente no podemos responder la pregunta, así que solo tendrá que probarla. Si decide que es demasiado caro o que vale la pena invertirlo de aceptable a bastante barato, cambie la pregunta y pregunte cómo acelerar las cosas.

2

No he intentado esto, pero su pregunta es relevante para una situación en la que he estado pensando.

¿No indicó qué datos están cambiando? base de datos, datos xml, etc.

El almacenamiento en caché de ASP.NET admite la actualización de la memoria caché en función de una variedad de dependencias.

Consulte este artículo en las secciones de Dependencia basada en archivos, Dependencia basada en tiempo, y Dependencia basada en claves.

"Las dependencias nos permiten invalidar un elemento particular dentro de la memoria caché en función de los cambios en los archivos, cambios a otras claves de caché o en un punto fijo en el tiempo. Veamos cada una de estas dependencias."

Aquí está el artículo:

http://msdn.microsoft.com/en-us/library/ms972379.aspx

Gracias

Joe

Cuestiones relacionadas