Używam VirtualPathProvider
, który obecnie odwzorowuje ścieżkę wirtualną do katalogu zewnętrznego względem rozwiązania. Buduję to głównie do samodzielnego ćwiczenia. Jest to całkowicie równoznaczne z twardym łączem typu soft-link lub NTFS w katalogu rozwiązania.Buforowanie zasobów statycznych zwróconych przez VirtualPathProvider
W każdym razie udało mi się załadować statyczne obrazy z tego katalogu wirtualnego przy użyciu mojego niestandardowego dostawcy.
Problem polega na tym, że przeglądarka nie buforuje obrazów. Serwer nie myśli nawet o zwrocie informacji z pamięci podręcznej (np. ETag).
Oto co zrobiłem:
GetFile(path).Open()
powracaFileStream
poprzezFile.Open()
- zrobiłem nie override
GetCacheKey
iGetCacheDependencies
- zrobiłem zastąpić
GetFileHash
powracającego hash szmer (wydaje się być najszybszy, nawet niż CRC-32) i przetestowany to - Podczas debugowania,
GetFileHash
nie jest wywoływana w moim dostawcą
CTRL-F5
ing tylko zwraca następujące nagłówki (bez odniesienia do cache)
Cache-Control private
Content-Length 476
Content-Type image/png
Date Sat, 29 Dec 2012 21:25:54 GMT
Server Microsoft-IIS/8.0
X-AspNet-Version 4.0.30319
X-Powered-By ASP.NET
X-SourceFiles [...]
Jestem obecnie debugowania w Visual Studio debugowania i Firefox serwera wyposażonego w Firebug.
Jako przykład, tutaj jest to, co się spodziewałem (http://i.stack.imgur.com/3mn3d.png)
Accept-Ranges bytes
Cache-Control max-age=315360000
Content-Length 1059
Content-Type image/png
Date Sat, 29 Dec 2012 21:35:29 GMT
Etag "7d636a8ef932ed081c16ace6f87b16e6"
Expires Fri, 12 Feb 2038 09:58:39 GMT
Last-Modified Tue, 14 Feb 2012 22:07:18 GMT
Server ECAcc (fcn/4089)
X-Cache HIT
pytanie jest oczywista: w jaki sposób mogę uzyskać przeglądarkę nie przeładować te zasoby statyczne?
Czy możesz wyjaśnić swoje rozwiązanie problemu z buforowaniem? –