Cache.Dodaj absolutne wygaśnięcie - oparte na UTC lub nie?
Przykłady dlaCache.Add używaDateTime.Now.Add
obliczyć datę wygaśnięcia, to znaczy przechodzi:
DateTime.Now.AddSeconds(60)
jako wartośćabsoluteExpiration
parametr.
Pomyślałbym, że obliczanie tego w stosunku doDateTime.UtcNow
byłoby bardziej poprawne [ponieważ nie ma dwuznaczności, jeśli czas letni zaczyna się w odstępie czasu między teraz a punktem wygaśnięcia].
Przed wprowadzeniemDateTimeKind
, Domyśliłbym się, że w zarządzaniu pamięcią podręczną jest trochę brzydkich hacków, aby zrobić coś odpowiedniego, jeśli czas nie był czasem UTC.
W .NET 2.0 i nowszych odgaduję, że powinien on obsługiwaćDateTime
obliczony jakoDateTime.UtcNow.AddSeconds(60)
poprawnie podany, że takDateTime.Kind
użyć jako danych wejściowych w swoich wnioskach.
Z ufnością korzystałemDateTime.UtcNow
jako baza na lata, ale nie był w stanie znaleźć uzasadnienia, że jest to zdecydowanie właściwa rzecz w przypadku braku czegokolwiek, co wskazuje, że dokumentacja jest bardzo myląca przez ponad 4 lata.
Pytania?
Pomimo wielu bingage i googling nie byłem w stanie znaleźć żadnej autorytatywnej dyskusji na ten temat z MS - czy ktoś może znaleźć coś na ten temat?Czy jest jakiś powód, dla którego używanie UtcNow nie byłoby bardziej poprawne i / lub bezpieczne?(Tak, mogłem przeczytać źródło i / lub źródło Reflectora, ale szukam pełnego down-by-blow!)