Назад | Перейти на главную страницу

сделать кеширование файлов статического содержимого IIS 7.5 на разных страницах

На Windows 2008 R2, используя DNS и IIS, я установил свой тестовый сервер разработки; то есть у меня будет веб-приложение, в котором я могу просматривать http://test.dev

Я переместил все файлы статического содержимого, такие как изображения, файлы js и файлы css, в другое приложение, которое отображается на http://cdn.test.dev

test.dev, использует URL-адреса cdn.test.dev, например http://cdn.test.dev/js/jquery.js для загрузки js, css и изображений.

Когда я впервые загружаю "~ /" test.dev, все файлы загружаются с кодом ответа 200; когда я нажимаю F5 в Firefox, все файлы, кроме «~ / default.aspx», загружаются с кодом ответа 304; но нажатие Ctrl + F5 снова загружает их с кодом 200; если я просматриваю другой URL-адрес, например "~ / pages /" в test.dev, все эти статические файлы будут перезагружены с кодом 200 ... Это нормально или я что-то делаю неправильно?

Собственно, я ищу такое поведение:
Я хочу, чтобы клиент загрузил http://cdn.test.dev/js/jquery.js, только один раз. Я хочу, чтобы клиентский браузер использовал этот файл jquery.js из кеша на всех других страницах test.dev

Это возможно?

Это файл web.config, который у меня есть в корневом каталоге cdn.test.dev:

<configuration>
    <system.webServer>
        <caching>
            <profiles>
                <add extension=".png" policy="CacheUntilChange" varyByHeaders="User-Agent" location="Client" />
                <add extension=".gif" policy="CacheUntilChange" varyByHeaders="User-Agent" location="Client" />
                <add extension=".jpg" policy="CacheUntilChange" varyByHeaders="User-Agent" location="Client" />
                <add extension=".js" policy="CacheUntilChange" varyByHeaders="User-Agent" location="Client" />
                <add extension=".css" policy="CacheUntilChange" varyByHeaders="User-Agent" location="Client" />
                <add extension=".axd" kernelCachePolicy="CacheUntilChange" varyByHeaders="User-Agent" location="Client" />
            </profiles>
        </caching>
        <httpProtocol allowKeepAlive="true">
            <customHeaders>
                <add name="Cache-Control" value="public, max-age=31536000" />
            </customHeaders>
        </httpProtocol>
        <validation validateIntegratedModeConfiguration="false" />
        <modules runAllManagedModulesForAllRequests="true">
            <remove name="RadUploadModule" />
            <remove name="RadCompression" />
            <add name="RadUploadModule" type="Telerik.Web.UI.RadUploadHttpModule" preCondition="integratedMode" />
            <add name="RadCompression" type="Telerik.Web.UI.RadCompression" preCondition="integratedMode" />
        </modules>
        <handlers>
            <remove name="ChartImage_axd" />
            <remove name="Telerik_Web_UI_SpellCheckHandler_axd" />
            <remove name="Telerik_Web_UI_DialogHandler_aspx" />
            <remove name="Telerik_RadUploadProgressHandler_ashx" />
            <remove name="Telerik_Web_UI_WebResource_axd" />
            <add name="ChartImage_axd" path="ChartImage.axd" type="Telerik.Web.UI.ChartHttpHandler" verb="*" preCondition="integratedMode" />
            <add name="Telerik_Web_UI_SpellCheckHandler_axd" path="Telerik.Web.UI.SpellCheckHandler.axd" type="Telerik.Web.UI.SpellCheckHandler" verb="*" preCondition="integratedMode" />
            <add name="Telerik_Web_UI_DialogHandler_aspx" path="Telerik.Web.UI.DialogHandler.aspx" type="Telerik.Web.UI.DialogHandler" verb="*" preCondition="integratedMode" />
            <add name="Telerik_RadUploadProgressHandler_ashx" path="Telerik.RadUploadProgressHandler.ashx" type="Telerik.Web.UI.RadUploadProgressHandler" verb="*" preCondition="integratedMode" />
            <add name="Telerik_Web_UI_WebResource_axd" path="Telerik.Web.UI.WebResource.axd" type="Telerik.Web.UI.WebResource" verb="*" preCondition="integratedMode" />
        </handlers>
        <security>
            <requestFiltering>
                <requestLimits maxAllowedContentLength="10485760" />
            </requestFiltering>
        </security>
        <staticContent>
           <clientCache cacheControlMode="UseExpires" httpExpires="Wed, 01 Jan 2020 00:00:00 GMT"/>
        </staticContent>
    </system.webServer>
    <appSettings />
    <system.web>
        <compilation debug="false" targetFramework="4.0" />
        <pages>
            <controls>
                <add tagPrefix="telerik" namespace="Telerik.Web.UI" assembly="Telerik.Web.UI" />
            </controls>
        </pages>
        <httpHandlers>
            <add path="ChartImage.axd" type="Telerik.Web.UI.ChartHttpHandler" verb="*" validate="false" />
            <add path="Telerik.Web.UI.SpellCheckHandler.axd" type="Telerik.Web.UI.SpellCheckHandler" verb="*" validate="false" />
            <add path="Telerik.Web.UI.DialogHandler.aspx" type="Telerik.Web.UI.DialogHandler" verb="*" validate="false" />
            <add path="Telerik.RadUploadProgressHandler.ashx" type="Telerik.Web.UI.RadUploadProgressHandler" verb="*" validate="false" />
            <add path="Telerik.Web.UI.WebResource.axd" type="Telerik.Web.UI.WebResource" verb="*" validate="false" />
        </httpHandlers>
        <httpModules>
            <add name="RadUploadModule" type="Telerik.Web.UI.RadUploadHttpModule" />
            <add name="RadCompression" type="Telerik.Web.UI.RadCompression" />
        </httpModules>
        <httpRuntime maxRequestLength="10240" />
    </system.web>
</configuration>

и это результирующий заголовок ответа для http://cdn.test.dev/css/global.css:

Кэш-контроль: частный, общедоступный, максимальный возраст = 31536000
Тип содержимого: текст / css
Кодирование содержимого: gzip
Срок действия истекает: Ср, 01 янв 2020 00:00:00 GMT
Последнее изменение: Пн, 06 сен 2010 08:53:06 GMT
Допустимые диапазоны: байты
Etag: "0454eca04dcb1: 0"
Варьировать: Принять-кодирование
Сервер: Microsoft-IIS / 7.5
X-Powered-By: ASP.NET
Дата: Пн, 06 сен 2010 14:57:08 GMT
Content-Length: 4495

Когда я впервые загружаю "~ /" test.dev, все файлы загружаются с кодом ответа 200; когда я нажимаю F5 в Firefox, все файлы, кроме «~ / default.aspx», загружаются с кодом ответа 304; но нажатие Ctrl + F5 снова загружает их с кодом 200; если я просматриваю другой URL-адрес, например "~ / pages /" в test.dev, все эти статические файлы будут перезагружены с кодом 200 ... Это нормально или я делаю что-то не так?

В firefox (и большинстве других браузеров) shift + F5 перезагружает сайт, игнорируя кеш.