Метка времени файла автоматически проверяется в IIS, и браузер всегда запрашивает у сервера обновленный файл на основе метки времени, то есть .nocache.файлам не нужно ничего особенного в IIS.
Однако, если вы хотите, чтобы браузер кэшировал .cache.файлы, а затем следующий HttpModule устанавливает дату истечения срока действия кеша через 30 дней для файлов, которые заканчиваются на .cache.js или .cache.html (или любое расширение).Браузер даже не будет запрашивать обновленные версии этих файлов.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace CacheModulePlayground
{
public class CacheModule : IHttpModule
{
private HttpApplication _context;
public void Init(HttpApplication context)
{
_context = context;
context.PreSendRequestHeaders += context_PreSendRequestHeaders;
}
void context_PreSendRequestHeaders(object sender, EventArgs e)
{
if (_context.Response.StatusCode == 200 || _context.Response.StatusCode == 304)
{
var path = _context.Request.Path;
var dotPos = path.LastIndexOf('.');
if (dotPos > 5)
{
var preExt = path.Substring(dotPos - 6, 7);
if (preExt == ".cache.")
{
_context.Response.Cache.SetExpires(DateTime.UtcNow.Add(TimeSpan.FromDays(30)));
}
}
}
}
public void Dispose()
{
_context = null;
}
}
}
Файл web.config для этого:
<configuration>
<system.web>
<compilation debug="true" targetFramework="4.5" />
<httpRuntime targetFramework="4.5" />
</system.web>
<system.webServer>
<modules>
<add name="cacheExtension" type="CacheModulePlayground.CacheModule"/>
</modules>
</system.webServer>
</configuration>