From 321fae766eaa02dbb145a9cf140882b02576782b Mon Sep 17 00:00:00 2001 From: Rick Anderson Date: Thu, 17 Nov 2016 20:19:09 -1000 Subject: [PATCH] Response Caching total rewrite --- aspnetcore/performance/caching/index.md | 7 +- aspnetcore/performance/caching/middleware.md | 15 +++ aspnetcore/performance/caching/response.md | 97 +++++++-------- .../response/_static/proxy-and-cache.png | Bin 49063 -> 0 bytes .../caching/response/_static/vary.png | Bin 0 -> 35264 bytes .../{src/ResponseCacheSample => }/.bowerrc | 0 .../Controllers/HomeController.cs | 21 +++- .../caching/response/sample/Program.cs | 24 ++++ .../response/sample/ResponseCacheSample.sln | 32 ----- .../ResponseCacheSample.xproj | 12 +- .../caching/response/sample/Startup.cs | 71 +++++++++++ .../Views/Home/About.cshtml | 0 .../Views/Home/Contact.cshtml | 0 .../response/sample/Views/Home/Index.cshtml | 9 ++ .../response/sample/Views/Shared/Error.cshtml | 14 +++ .../sample/Views/Shared/_Layout.cshtml | 67 +++++++++++ .../Views/_ViewImports.cshtml | 1 - .../Views/_ViewStart.cshtml | 0 .../ResponseCacheSample => }/appsettings.json | 5 +- .../caching/response/sample/bower.json | 10 ++ .../caching/response/sample/bundleconfig.json | 24 ++++ .../caching/response/sample/global.json | 6 - .../caching/response/sample/project.json | 65 +++++++++++ .../Properties/launchSettings.json | 27 ----- .../sample/src/ResponseCacheSample/Startup.cs | 54 --------- .../Views/Home/Index.cshtml | 110 ------------------ .../Views/Shared/Error.cshtml | 6 - .../Views/Shared/_Layout.cshtml | 67 ----------- .../sample/src/ResponseCacheSample/bower.json | 10 -- .../src/ResponseCacheSample/gulpfile.js | 45 ------- .../src/ResponseCacheSample/package.json | 11 -- .../src/ResponseCacheSample/project.json | 51 -------- .../wwwroot/_references.js | 7 -- .../ResponseCacheSample/wwwroot/css/site.css | 34 ------ .../wwwroot/css/site.min.css | 1 - .../ResponseCacheSample/wwwroot/favicon.ico | Bin 32038 -> 0 bytes .../wwwroot/images/ASP-NET-Banners-01.png | Bin 8314 -> 0 bytes .../wwwroot/images/ASP-NET-Banners-02.png | Bin 8616 -> 0 bytes .../wwwroot/images/Banner-01-Azure.png | Bin 14436 -> 0 bytes .../wwwroot/images/Banner-02-VS.png | Bin 12388 -> 0 bytes .../ResponseCacheSample/wwwroot/js/site.js | 1 - .../wwwroot/js/site.min.js | 0 .../ResponseCacheSample/wwwroot/web.config | 9 -- .../caching/response/sample/web.config | 14 +++ aspnetcore/performance/caching/toc.md | 1 + 45 files changed, 383 insertions(+), 545 deletions(-) create mode 100644 aspnetcore/performance/caching/middleware.md delete mode 100644 aspnetcore/performance/caching/response/_static/proxy-and-cache.png create mode 100644 aspnetcore/performance/caching/response/_static/vary.png rename aspnetcore/performance/caching/response/sample/{src/ResponseCacheSample => }/.bowerrc (100%) rename aspnetcore/performance/caching/response/sample/{src/ResponseCacheSample => }/Controllers/HomeController.cs (65%) create mode 100644 aspnetcore/performance/caching/response/sample/Program.cs delete mode 100644 aspnetcore/performance/caching/response/sample/ResponseCacheSample.sln rename aspnetcore/performance/caching/response/sample/{src/ResponseCacheSample => }/ResponseCacheSample.xproj (61%) create mode 100644 aspnetcore/performance/caching/response/sample/Startup.cs rename aspnetcore/performance/caching/response/sample/{src/ResponseCacheSample => }/Views/Home/About.cshtml (100%) rename aspnetcore/performance/caching/response/sample/{src/ResponseCacheSample => }/Views/Home/Contact.cshtml (100%) create mode 100644 aspnetcore/performance/caching/response/sample/Views/Home/Index.cshtml create mode 100644 aspnetcore/performance/caching/response/sample/Views/Shared/Error.cshtml create mode 100644 aspnetcore/performance/caching/response/sample/Views/Shared/_Layout.cshtml rename aspnetcore/performance/caching/response/sample/{src/ResponseCacheSample => }/Views/_ViewImports.cshtml (69%) rename aspnetcore/performance/caching/response/sample/{src/ResponseCacheSample => }/Views/_ViewStart.cshtml (100%) rename aspnetcore/performance/caching/response/sample/{src/ResponseCacheSample => }/appsettings.json (61%) create mode 100644 aspnetcore/performance/caching/response/sample/bower.json create mode 100644 aspnetcore/performance/caching/response/sample/bundleconfig.json delete mode 100644 aspnetcore/performance/caching/response/sample/global.json create mode 100644 aspnetcore/performance/caching/response/sample/project.json delete mode 100644 aspnetcore/performance/caching/response/sample/src/ResponseCacheSample/Properties/launchSettings.json delete mode 100644 aspnetcore/performance/caching/response/sample/src/ResponseCacheSample/Startup.cs delete mode 100644 aspnetcore/performance/caching/response/sample/src/ResponseCacheSample/Views/Home/Index.cshtml delete mode 100644 aspnetcore/performance/caching/response/sample/src/ResponseCacheSample/Views/Shared/Error.cshtml delete mode 100644 aspnetcore/performance/caching/response/sample/src/ResponseCacheSample/Views/Shared/_Layout.cshtml delete mode 100644 aspnetcore/performance/caching/response/sample/src/ResponseCacheSample/bower.json delete mode 100644 aspnetcore/performance/caching/response/sample/src/ResponseCacheSample/gulpfile.js delete mode 100644 aspnetcore/performance/caching/response/sample/src/ResponseCacheSample/package.json delete mode 100644 aspnetcore/performance/caching/response/sample/src/ResponseCacheSample/project.json delete mode 100644 aspnetcore/performance/caching/response/sample/src/ResponseCacheSample/wwwroot/_references.js delete mode 100644 aspnetcore/performance/caching/response/sample/src/ResponseCacheSample/wwwroot/css/site.css delete mode 100644 aspnetcore/performance/caching/response/sample/src/ResponseCacheSample/wwwroot/css/site.min.css delete mode 100644 aspnetcore/performance/caching/response/sample/src/ResponseCacheSample/wwwroot/favicon.ico delete mode 100644 aspnetcore/performance/caching/response/sample/src/ResponseCacheSample/wwwroot/images/ASP-NET-Banners-01.png delete mode 100644 aspnetcore/performance/caching/response/sample/src/ResponseCacheSample/wwwroot/images/ASP-NET-Banners-02.png delete mode 100644 aspnetcore/performance/caching/response/sample/src/ResponseCacheSample/wwwroot/images/Banner-01-Azure.png delete mode 100644 aspnetcore/performance/caching/response/sample/src/ResponseCacheSample/wwwroot/images/Banner-02-VS.png delete mode 100644 aspnetcore/performance/caching/response/sample/src/ResponseCacheSample/wwwroot/js/site.js delete mode 100644 aspnetcore/performance/caching/response/sample/src/ResponseCacheSample/wwwroot/js/site.min.js delete mode 100644 aspnetcore/performance/caching/response/sample/src/ResponseCacheSample/wwwroot/web.config create mode 100644 aspnetcore/performance/caching/response/sample/web.config diff --git a/aspnetcore/performance/caching/index.md b/aspnetcore/performance/caching/index.md index f39d4ef60c..22b49a8962 100644 --- a/aspnetcore/performance/caching/index.md +++ b/aspnetcore/performance/caching/index.md @@ -1,8 +1,8 @@ --- title: Caching | Microsoft Docs author: ardalis -description: -keywords: ASP.NET Core, +description: Demonstrates how to use caching for higher performance. +keywords: ASP.NET Core, caching, performance ms.author: riande manager: wpickett ms.date: 10/14/2016 @@ -15,7 +15,6 @@ uid: performance/caching/index # Caching * [In Memory Caching](memory.md) - * [Working with a Distributed Cache](distributed.md) - * [Response Caching](response.md) +* [Response caching middleware](middleware.md) diff --git a/aspnetcore/performance/caching/middleware.md b/aspnetcore/performance/caching/middleware.md new file mode 100644 index 0000000000..6427f0a57e --- /dev/null +++ b/aspnetcore/performance/caching/middleware.md @@ -0,0 +1,15 @@ +--- +title: 🔧 Response caching middleware +author: rick-anderson +ms.author: riande +manager: wpickett +ms.date: 10/14/2016 +ms.topic: article +ms.assetid: f9267eab-2762-42ac-1638-4a25d2c9d67c +ms.prod: aspnet-core +uid: performance/caching/middleware +--- +# 🔧 Response caching middleware + +> [!NOTE] +> We are currently working on this topic.We welcome your input to help shape the scope and approach. You can track the status and provide input on this [issue](https://github.com/aspnet/Docs/issues/2198) at GitHub.If you would like to review early drafts and outlines of this topic, please leave a note with your contact information in the [issue](https://github.com/aspnet/Docs/issues/2198). Learn more about how you can [contribute](https://github.com/aspnet/Docs/blob/master/CONTRIBUTING.md) on GitHub. diff --git a/aspnetcore/performance/caching/response.md b/aspnetcore/performance/caching/response.md index b0a0481c6d..68ffe508bf 100644 --- a/aspnetcore/performance/caching/response.md +++ b/aspnetcore/performance/caching/response.md @@ -1,92 +1,73 @@ --- title: Response Caching | Microsoft Docs -author: ardalis -description: +author: riande +description: Explains how to use Response caching to lower bandwidth and increase performance. keywords: ASP.NET Core, ms.author: riande +ms.author: riande manager: wpickett ms.date: 10/14/2016 ms.topic: article ms.assetid: cb42035a-60b0-472e-a614-cb79f443f654 -ms.technology: aspnet ms.prod: aspnet-core uid: performance/caching/response --- # Response Caching ->[!WARNING] -> This page documents version 1.0.0-rc1 and has not yet been updated for version 1.0.0 - -[Steve Smith](http://ardalis.com) +[Rick Anderson](https://twitter.com/RickAndMSFT) and [Steve Smith](http://ardalis.com) [View or download sample code](https://github.com/aspnet/Docs/tree/master/aspnetcore/performance/caching/response/sample) ## What is Response Caching -*Response caching* refers to specifying cache-related headers on HTTP responses made by ASP.NET Core MVC actions. These headers specify how you want client and intermediate (proxy) machines to cache responses to certain requests (if at all). This can reduce the number of requests a client or proxy makes to the web server, since future requests for the same action may be served from the client or proxy's cache. In this case, the request is never made to the web server. +*Response caching* adds cache-related headers to responses. These headers specify how you want client, intermediate (proxy) machines and middleware to cache responses. Response caching can reduce the number of requests a client or proxy makes to the web server. Response caching can also reduce the amount of work the web server performs to generate the response. Repeated matching may be served from the cache of the client, proxy or server. Cached responses can be returned by the client, the proxy or served by the response caching middleware. Cached requests served by the client or proxy save bandwidth and server load. Cached requests served by middleware can reduce web app server load. -![image](response/_static/proxy-and-cache.png) +The primary HTTP header used for caching is `Cache-Control`. See the [HTTP 1.1 Caching](https://tools.ietf.org/html/rfc7234#section-5.2) and [Cache-Control](https://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9) for more information. Common cache directives: -The primary HTTP header used for caching is `Cache-Control`. The [HTTP 1.1 specification](https://tools.ietf.org/html/rfc7234#section-5.2) details many options for this directive. Three common directives are: +* [public](https://tools.ietf.org/html/rfc7234#section-5.2.2.5) +* [private](https://tools.ietf.org/html/rfc7234#section-5.2.2.6) +* [no-cache](https://tools.ietf.org/html/rfc7234#section-5.2.1.4) +* [Pragma](https://tools.ietf.org/html/rfc7234#section-5.4) +* [Vary](https://tools.ietf.org/html/rfc7231#section-7.1.4) -**public** - - Indicates that the response may be cached. - -**private** - - Indicates the response is intended for a single user and **must not** be cached by a shared cache. The response could still be cached in a private cache (for instance, by the user's browser). - -**no-cache** - - Indicates the response **must not** be used by a cache to satisfy any subsequent request (without successful revalidation with the origin server). - -> [!NOTE] -> **Response caching does not cache responses on the web server**. It differs from [output caching](http://www.asp.net/mvc/overview/older-versions-1/controllers-and-routing/improving-performance-with-output-caching-cs), which would cache responses in memory on the server in earlier versions of ASP.NET and ASP.NET MVC. Output caching middleware is planned to be added to ASP.NET Core in a future release. - -Additional HTTP headers used for caching include `Pragma` and `Vary`, which are described below. Learn more about [Caching in HTTP from the specification](https://tools.ietf.org/html/rfc7234#section-3). +Caching responses on the web server can be enabled by adding the [response caching middleware](https://github.com/aspnet/responsecaching). See [Response caching middleware](middleware.md) for more information. ## ResponseCache Attribute -The `ResponseCacheAttribute` is used to specify how a controller action's headers should be set to control its cache behavior. The attribute has the following properties, all of which are optional unless otherwise noted. +The [ResponseCacheAttribute](https://docs.microsoft.com/en-us/aspnet/core/api/microsoft.aspnetcore.mvc.responsecacheattribute) specifies the parameters necessary for setting appropriate headers in response caching. See [ResponseCacheAttribute](https://docs.microsoft.com/en-us/aspnet/core/api/microsoft.aspnetcore.mvc.responsecacheattribute) for a description of the parameters. -**Duration `int`** +`VaryByQueryKeys string[]`: When set, the response caching middleware will vary the stored response by the given list of query keys. The middleware will serve the stored response only if the query keys of the request matches those of the original request that generated the stored response. Setting this property without adding the middleware will throw a runttime exception. - The maximum duration (in seconds) the response should be cached. **Required** unless `NoStore` is `true`. + There is no corresponding HTTP header for this property. This property is an HTTP feature handled by the response caching middleware. To set the `VaryByQueryKeys` property, the response caching middleware must be enabled. -**Location `ResponseCacheLocation`** +The `ResponseCacheAttribute` is used to configure and create (via `IFilterFactory`) a `ResponseCacheFilter`. The `ResponseCacheFilter` performs the work of updating the appropriate HTTP headers and features of the response. The filter: - The location where the response may be cached. May be `Any`, `None`, or `Client`. Default is `Any`. +* Removes any existing headers for `Vary`, `Cache-Control`, and `Pragma`. +* Writes out the appropriate headers based on the properties set in the `ResponseCacheAttribute`. +* Updates the response caching HTTP feature if `VaryByQueryKeys` is set. -**NoStore `bool`** +### `Vary` - Determines whether the value should be stored or not, and overrides other property values. When `true`, `Duration` is ignored and `Location` is ignored for values other than `None`. +This header is only written when the `VaryByHeader` property is set. It is set to the `Vary` property's value. The following sample uses the `VaryByHeader` property. -**VaryByHeader `string`** +[!code-csharp[Main](response/sample/Controllers/HomeController.cs?name=snippet_VaryByHeader&highlight=1)] - When set, a `vary` response header will be written with the response. +You can view the response headers with your browsers network tools or the [Fidder tool](http://www.telerik.com/fiddler). The following image shows the Edge F12 output on the **Network** tab when the `About2` action method is called: -**CacheProfileName `string`** - - When set, determines the name of the cache profile to use. - -**Order `int`** - - The order of the filter (from `IOrderedFilter`). - -The `ResponseCacheAttribute` is used to configure and create (via `IFilterFactory`) a `ResponseCacheFilter`, which performs the work of writing the appropriate HTTP headers to the response. The filter will first remove any existing headers for `Vary`, `Cache-Control`, and `Pragma`, and then will write out the appropriate headers based on the properties set in the `ResponseCacheAttribute`. - -### The `Vary` Header - -This header is only written when the `VaryByHeader` property is set, in which case it is set to that property's value. +![Edge F12 output on the **Network** tab when the `About2` action method is called](response/_static/vary.png) ### `NoStore` and `Location.None` -`NoStore` is a special property that overrides most of the other properties. When this property is set to `true`, the `Cache-Control` header will be set to "no-store". Additionally, if `Location` is set to `None`, then `Cache-Control` will be set to "no-store, no-cache" and `Pragma` is likewise set to `no-cache`. (If `NoStore` is `false` and `Location` is `None`, then both `Cache-Control` and `Pragma` will be set to `no-cache`). +`NoStore` overrides most of the other properties. When this property is set to `true`, the `Cache-Control` header will be set to "no-store". If `Location` is set to `None`: -A good scenario in which to set `NoStore` to `true` is error pages. It's unlikely you would want to respond to a user's request with the error response a different user previously generated, and such responses may include stack traces and other sensitive information that shouldn't be stored on intermediate servers. For example: +* `Cache-Control` is set to `"no-store, no-cache"`. +* `Pragma` is set to `no-cache`. -[!code-csharp[Main](./response/sample/src/ResponseCacheSample/Controllers/HomeController.cs?highlight=1&range=30-34)] +If `NoStore` is `false` and `Location` is `None`, `Cache-Control` and `Pragma` will be set to `no-cache`. + +You typically set `NoStore` to `true` on error pages. For example: + +[!code-csharp[Main](response/sample/Controllers/HomeController.cs?name=snippet1&highlight=1)] This will result in the following headers: @@ -104,7 +85,7 @@ To enable caching, `Duration` must be set to a positive value and `Location` mus Below is an example showing the headers produced by setting `Duration` and leaving the default `Location` value. -[!code-csharp[Main](./response/sample/src/ResponseCacheSample/Controllers/HomeController.cs?highlight=1&range=22-28)] +[!code-csharp[Main](response/sample/Controllers/HomeController.cs?name=snippet_duration&highlight=1)] Produces the following headers: @@ -118,14 +99,13 @@ Instead of duplicating `ResponseCache` settings on many controller action attrib Setting up a cache profile: -[!code-csharp[Main](./response/sample/src/ResponseCacheSample/Startup.cs?highlight=5,6,7,8,9,10,11,12,13,14,15&range=12-28)] +[!code-csharp[Main](response/sample/Startup.cs?name=snippet1)] Referencing a cache profile: -[!code-csharp[Main](./response/sample/src/ResponseCacheSample/Controllers/HomeController.cs?highlight=1,4&range=5-12,35)] +[!code-csharp[Main](response/sample/Controllers/HomeController.cs?name=snippet_controller&highlight=1,4)] ->[!TIP] -> The `ResponseCache` attribute can be applied both to actions (methods) as well as controllers (classes). Method-level attributes will override the settings specified in class-level attributes. +The `ResponseCache` attribute can be applied both to actions (methods) as well as controllers (classes). Method-level attributes will override the settings specified in class-level attributes. In the above example, a class-level attribute specifies a duration of 30 seconds while a method-level attributes references a cache profile with a duration set to 60 seconds. @@ -134,3 +114,8 @@ The resulting header: ```javascript Cache-Control: public,max-age=60 ``` + + ### Additional Resources + +* [Caching in HTTP from the specification](https://tools.ietf.org/html/rfc7234#section-3) +* [Cache-Control](https://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9) \ No newline at end of file diff --git a/aspnetcore/performance/caching/response/_static/proxy-and-cache.png b/aspnetcore/performance/caching/response/_static/proxy-and-cache.png deleted file mode 100644 index ae338cfbe8e881fb990367f1eef836f533d8298d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 49063 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 diff --git a/aspnetcore/performance/caching/response/_static/vary.png b/aspnetcore/performance/caching/response/_static/vary.png new file mode 100644 index 0000000000000000000000000000000000000000..96353debee988d815ce375066b546097e422511f GIT binary patch literal 35264 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

v&>Dx4C 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 literal 0 HcmV?d00001 diff --git a/aspnetcore/performance/caching/response/sample/src/ResponseCacheSample/.bowerrc b/aspnetcore/performance/caching/response/sample/.bowerrc similarity index 100% rename from aspnetcore/performance/caching/response/sample/src/ResponseCacheSample/.bowerrc rename to aspnetcore/performance/caching/response/sample/.bowerrc diff --git a/aspnetcore/performance/caching/response/sample/src/ResponseCacheSample/Controllers/HomeController.cs b/aspnetcore/performance/caching/response/sample/Controllers/HomeController.cs similarity index 65% rename from aspnetcore/performance/caching/response/sample/src/ResponseCacheSample/Controllers/HomeController.cs rename to aspnetcore/performance/caching/response/sample/Controllers/HomeController.cs index 622061ccf3..50ce0fab4c 100644 --- a/aspnetcore/performance/caching/response/sample/src/ResponseCacheSample/Controllers/HomeController.cs +++ b/aspnetcore/performance/caching/response/sample/Controllers/HomeController.cs @@ -2,6 +2,7 @@ namespace ResponseCacheSample.Controllers { + #region snippet_controller [ResponseCache(Duration = 30)] public class HomeController : Controller { @@ -10,7 +11,8 @@ namespace ResponseCacheSample.Controllers { return View(); } - + #endregion + #region snippet_about [ResponseCache(Duration = 10, Location = ResponseCacheLocation.Any, NoStore = false)] public IActionResult About() { @@ -18,7 +20,8 @@ namespace ResponseCacheSample.Controllers return View(); } - + #endregion + #region snippet_duration [ResponseCache(Duration = 60)] public IActionResult Contact() { @@ -26,11 +29,23 @@ namespace ResponseCacheSample.Controllers return View(); } - + #endregion + #region snippet1 [ResponseCache(Location = ResponseCacheLocation.None, NoStore = true)] public IActionResult Error() { return View(); } + #endregion + #region snippet_VaryByHeader + [ResponseCache(VaryByHeader = "User-Agent", Duration = 30)] + public IActionResult About2() + { + #endregion + + ViewData["Message"] = "About2 VaryByHeader "; + + return View("About"); + } } } diff --git a/aspnetcore/performance/caching/response/sample/Program.cs b/aspnetcore/performance/caching/response/sample/Program.cs new file mode 100644 index 0000000000..2050f37267 --- /dev/null +++ b/aspnetcore/performance/caching/response/sample/Program.cs @@ -0,0 +1,24 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Threading.Tasks; +using Microsoft.AspNetCore.Hosting; + +namespace ResponseCacheSample +{ + public class Program + { + public static void Main(string[] args) + { + var host = new WebHostBuilder() + .UseKestrel() + .UseContentRoot(Directory.GetCurrentDirectory()) + .UseIISIntegration() + .UseStartup() + .Build(); + + host.Run(); + } + } +} diff --git a/aspnetcore/performance/caching/response/sample/ResponseCacheSample.sln b/aspnetcore/performance/caching/response/sample/ResponseCacheSample.sln deleted file mode 100644 index b74e8acf6c..0000000000 --- a/aspnetcore/performance/caching/response/sample/ResponseCacheSample.sln +++ /dev/null @@ -1,32 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 14 -VisualStudioVersion = 14.0.24720.0 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{00B3B25C-17EF-4E95-8FF8-477BEE4DEAB1}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{0DA9E497-2CFB-4366-9489-361D87F30D17}" - ProjectSection(SolutionItems) = preProject - global.json = global.json - EndProjectSection -EndProject -Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "ResponseCacheSample", "src\ResponseCacheSample\ResponseCacheSample.xproj", "{3EF40110-98B1-4B6E-8E06-AD21CD8DA869}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {3EF40110-98B1-4B6E-8E06-AD21CD8DA869}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {3EF40110-98B1-4B6E-8E06-AD21CD8DA869}.Debug|Any CPU.Build.0 = Debug|Any CPU - {3EF40110-98B1-4B6E-8E06-AD21CD8DA869}.Release|Any CPU.ActiveCfg = Release|Any CPU - {3EF40110-98B1-4B6E-8E06-AD21CD8DA869}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(NestedProjects) = preSolution - {3EF40110-98B1-4B6E-8E06-AD21CD8DA869} = {00B3B25C-17EF-4E95-8FF8-477BEE4DEAB1} - EndGlobalSection -EndGlobal diff --git a/aspnetcore/performance/caching/response/sample/src/ResponseCacheSample/ResponseCacheSample.xproj b/aspnetcore/performance/caching/response/sample/ResponseCacheSample.xproj similarity index 61% rename from aspnetcore/performance/caching/response/sample/src/ResponseCacheSample/ResponseCacheSample.xproj rename to aspnetcore/performance/caching/response/sample/ResponseCacheSample.xproj index 0ef1e1c677..afe79df08a 100644 --- a/aspnetcore/performance/caching/response/sample/src/ResponseCacheSample/ResponseCacheSample.xproj +++ b/aspnetcore/performance/caching/response/sample/ResponseCacheSample.xproj @@ -4,12 +4,13 @@ 14.0 $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion) - + - 3ef40110-98b1-4b6e-8e06-ad21cd8da869 + ee294ce9-2562-4ef2-9b2a-28b1e823b904 ResponseCacheSample - ..\..\artifacts\obj\$(MSBuildProjectName) - ..\..\artifacts\bin\$(MSBuildProjectName)\ + .\obj + .\bin\ + v4.5.2 2.0 @@ -17,7 +18,6 @@ - - + diff --git a/aspnetcore/performance/caching/response/sample/Startup.cs b/aspnetcore/performance/caching/response/sample/Startup.cs new file mode 100644 index 0000000000..8d36c6b0f9 --- /dev/null +++ b/aspnetcore/performance/caching/response/sample/Startup.cs @@ -0,0 +1,71 @@ +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Hosting; +using Microsoft.Extensions.Configuration; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Logging; +using Microsoft.AspNetCore.Mvc; + +namespace ResponseCacheSample +{ + public class Startup + { + public Startup(IHostingEnvironment env) + { + var builder = new ConfigurationBuilder() + .SetBasePath(env.ContentRootPath) + .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true) + .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true) + .AddEnvironmentVariables(); + Configuration = builder.Build(); + } + + public IConfigurationRoot Configuration { get; } + + // This method gets called by the runtime. Use this method to add services to the container. + #region snippet1 + public void ConfigureServices(IServiceCollection services) + { + services.AddMvc(options => + { + options.CacheProfiles.Add("Default", + new CacheProfile() + { + Duration = 60 + }); + options.CacheProfiles.Add("Never", + new CacheProfile() + { + Location = ResponseCacheLocation.None, + NoStore = true + }); + }); + } + #endregion + + // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. + public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) + { + loggerFactory.AddConsole(Configuration.GetSection("Logging")); + loggerFactory.AddDebug(); + + if (env.IsDevelopment()) + { + app.UseDeveloperExceptionPage(); + app.UseBrowserLink(); + } + else + { + app.UseExceptionHandler("/Home/Error"); + } + + app.UseStaticFiles(); + + app.UseMvc(routes => + { + routes.MapRoute( + name: "default", + template: "{controller=Home}/{action=Index}/{id?}"); + }); + } + } +} diff --git a/aspnetcore/performance/caching/response/sample/src/ResponseCacheSample/Views/Home/About.cshtml b/aspnetcore/performance/caching/response/sample/Views/Home/About.cshtml similarity index 100% rename from aspnetcore/performance/caching/response/sample/src/ResponseCacheSample/Views/Home/About.cshtml rename to aspnetcore/performance/caching/response/sample/Views/Home/About.cshtml diff --git a/aspnetcore/performance/caching/response/sample/src/ResponseCacheSample/Views/Home/Contact.cshtml b/aspnetcore/performance/caching/response/sample/Views/Home/Contact.cshtml similarity index 100% rename from aspnetcore/performance/caching/response/sample/src/ResponseCacheSample/Views/Home/Contact.cshtml rename to aspnetcore/performance/caching/response/sample/Views/Home/Contact.cshtml diff --git a/aspnetcore/performance/caching/response/sample/Views/Home/Index.cshtml b/aspnetcore/performance/caching/response/sample/Views/Home/Index.cshtml new file mode 100644 index 0000000000..288b16ed5d --- /dev/null +++ b/aspnetcore/performance/caching/response/sample/Views/Home/Index.cshtml @@ -0,0 +1,9 @@ +@{ + ViewData["Title"] = "Home Page"; +} + +

@ViewData["Title"].

+

@ViewData["Message"]

+ +

Index view.

+ diff --git a/aspnetcore/performance/caching/response/sample/Views/Shared/Error.cshtml b/aspnetcore/performance/caching/response/sample/Views/Shared/Error.cshtml new file mode 100644 index 0000000000..e514139c45 --- /dev/null +++ b/aspnetcore/performance/caching/response/sample/Views/Shared/Error.cshtml @@ -0,0 +1,14 @@ +@{ + ViewData["Title"] = "Error"; +} + +

Error.

+

An error occurred while processing your request.

+ +

Development Mode

+

+ Swapping to Development environment will display more detailed information about the error that occurred. +

+

+ Development environment should not be enabled in deployed applications, as it can result in sensitive information from exceptions being displayed to end users. For local debugging, development environment can be enabled by setting the ASPNETCORE_ENVIRONMENT environment variable to Development, and restarting the application. +

diff --git a/aspnetcore/performance/caching/response/sample/Views/Shared/_Layout.cshtml b/aspnetcore/performance/caching/response/sample/Views/Shared/_Layout.cshtml new file mode 100644 index 0000000000..9717f7066e --- /dev/null +++ b/aspnetcore/performance/caching/response/sample/Views/Shared/_Layout.cshtml @@ -0,0 +1,67 @@ + + + + + + @ViewData["Title"] - ResponseCacheSample + + + + + + + + + + + + +
+ @RenderBody() +
+
+

© 2016 - ResponseCacheSample

+
+
+ + + + + + + + + + + + + @RenderSection("scripts", required: false) + + diff --git a/aspnetcore/performance/caching/response/sample/src/ResponseCacheSample/Views/_ViewImports.cshtml b/aspnetcore/performance/caching/response/sample/Views/_ViewImports.cshtml similarity index 69% rename from aspnetcore/performance/caching/response/sample/src/ResponseCacheSample/Views/_ViewImports.cshtml rename to aspnetcore/performance/caching/response/sample/Views/_ViewImports.cshtml index 7707f4b562..3ce1e63b2e 100644 --- a/aspnetcore/performance/caching/response/sample/src/ResponseCacheSample/Views/_ViewImports.cshtml +++ b/aspnetcore/performance/caching/response/sample/Views/_ViewImports.cshtml @@ -1,3 +1,2 @@ @using ResponseCacheSample -@using Microsoft.Extensions.Options @addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers diff --git a/aspnetcore/performance/caching/response/sample/src/ResponseCacheSample/Views/_ViewStart.cshtml b/aspnetcore/performance/caching/response/sample/Views/_ViewStart.cshtml similarity index 100% rename from aspnetcore/performance/caching/response/sample/src/ResponseCacheSample/Views/_ViewStart.cshtml rename to aspnetcore/performance/caching/response/sample/Views/_ViewStart.cshtml diff --git a/aspnetcore/performance/caching/response/sample/src/ResponseCacheSample/appsettings.json b/aspnetcore/performance/caching/response/sample/appsettings.json similarity index 61% rename from aspnetcore/performance/caching/response/sample/src/ResponseCacheSample/appsettings.json rename to aspnetcore/performance/caching/response/sample/appsettings.json index 11efdbcbe8..fa8ce71a97 100644 --- a/aspnetcore/performance/caching/response/sample/src/ResponseCacheSample/appsettings.json +++ b/aspnetcore/performance/caching/response/sample/appsettings.json @@ -1,11 +1,8 @@ { - "ApplicationInsights": { - "InstrumentationKey": "" - }, "Logging": { "IncludeScopes": false, "LogLevel": { - "Default": "Verbose", + "Default": "Debug", "System": "Information", "Microsoft": "Information" } diff --git a/aspnetcore/performance/caching/response/sample/bower.json b/aspnetcore/performance/caching/response/sample/bower.json new file mode 100644 index 0000000000..69159b6667 --- /dev/null +++ b/aspnetcore/performance/caching/response/sample/bower.json @@ -0,0 +1,10 @@ +{ + "name": "asp.net", + "private": true, + "dependencies": { + "bootstrap": "3.3.6", + "jquery": "2.2.0", + "jquery-validation": "1.14.0", + "jquery-validation-unobtrusive": "3.2.6" + } +} diff --git a/aspnetcore/performance/caching/response/sample/bundleconfig.json b/aspnetcore/performance/caching/response/sample/bundleconfig.json new file mode 100644 index 0000000000..04754ba713 --- /dev/null +++ b/aspnetcore/performance/caching/response/sample/bundleconfig.json @@ -0,0 +1,24 @@ +// Configure bundling and minification for the project. +// More info at https://go.microsoft.com/fwlink/?LinkId=808241 +[ + { + "outputFileName": "wwwroot/css/site.min.css", + // An array of relative input file paths. Globbing patterns supported + "inputFiles": [ + "wwwroot/css/site.css" + ] + }, + { + "outputFileName": "wwwroot/js/site.min.js", + "inputFiles": [ + "wwwroot/js/site.js" + ], + // Optionally specify minification options + "minify": { + "enabled": true, + "renameLocals": true + }, + // Optinally generate .map file + "sourceMap": false + } +] diff --git a/aspnetcore/performance/caching/response/sample/global.json b/aspnetcore/performance/caching/response/sample/global.json deleted file mode 100644 index e793049cd5..0000000000 --- a/aspnetcore/performance/caching/response/sample/global.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "projects": [ "src", "test" ], - "sdk": { - "version": "1.0.0-preview2-003121" - } -} diff --git a/aspnetcore/performance/caching/response/sample/project.json b/aspnetcore/performance/caching/response/sample/project.json new file mode 100644 index 0000000000..8c6f140a03 --- /dev/null +++ b/aspnetcore/performance/caching/response/sample/project.json @@ -0,0 +1,65 @@ +{ + "dependencies": { + "Microsoft.NETCore.App": { + "version": "1.0.1", + "type": "platform" + }, + "Microsoft.AspNetCore.Diagnostics": "1.0.0", + "Microsoft.AspNetCore.Mvc": "1.0.1", + "Microsoft.AspNetCore.Razor.Tools": { + "version": "1.0.0-preview2-final", + "type": "build" + }, + "Microsoft.AspNetCore.Routing": "1.0.1", + "Microsoft.AspNetCore.Server.IISIntegration": "1.0.0", + "Microsoft.AspNetCore.Server.Kestrel": "1.0.1", + "Microsoft.AspNetCore.StaticFiles": "1.0.0", + "Microsoft.Extensions.Configuration.EnvironmentVariables": "1.0.0", + "Microsoft.Extensions.Configuration.Json": "1.0.0", + "Microsoft.Extensions.Logging": "1.0.0", + "Microsoft.Extensions.Logging.Console": "1.0.0", + "Microsoft.Extensions.Logging.Debug": "1.0.0", + "Microsoft.Extensions.Options.ConfigurationExtensions": "1.0.0", + "Microsoft.VisualStudio.Web.BrowserLink.Loader": "14.0.0" + }, + + "tools": { + "BundlerMinifier.Core": "2.0.238", + "Microsoft.AspNetCore.Razor.Tools": "1.0.0-preview2-final", + "Microsoft.AspNetCore.Server.IISIntegration.Tools": "1.0.0-preview2-final" + }, + + "frameworks": { + "netcoreapp1.0": { + "imports": [ + "dotnet5.6", + "portable-net45+win8" + ] + } + }, + + "buildOptions": { + "emitEntryPoint": true, + "preserveCompilationContext": true + }, + + "runtimeOptions": { + "configProperties": { + "System.GC.Server": true + } + }, + + "publishOptions": { + "include": [ + "wwwroot", + "**/*.cshtml", + "appsettings.json", + "web.config" + ] + }, + + "scripts": { + "prepublish": [ "bower install", "dotnet bundle" ], + "postpublish": [ "dotnet publish-iis --publish-folder %publish:OutputPath% --framework %publish:FullTargetFramework%" ] + } +} diff --git a/aspnetcore/performance/caching/response/sample/src/ResponseCacheSample/Properties/launchSettings.json b/aspnetcore/performance/caching/response/sample/src/ResponseCacheSample/Properties/launchSettings.json deleted file mode 100644 index 92854c0cb1..0000000000 --- a/aspnetcore/performance/caching/response/sample/src/ResponseCacheSample/Properties/launchSettings.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "iisSettings": { - "windowsAuthentication": false, - "anonymousAuthentication": true, - "iisExpress": { - "applicationUrl": "http://localhost:47943/", - "sslPort": 0 - } - }, - "profiles": { - "IIS Express": { - "commandName": "IISExpress", - "launchBrowser": true, - "environmentVariables": { - "ASPNETCORE_ENVIRONMENT": "Development" - } - }, - "ResponseCacheSample": { - "commandName": "Project", - "launchBrowser": true, - "launchUrl": "http://localhost:5000", - "environmentVariables": { - "ASPNETCORE_ENVIRONMENT": "Development" - } - } - } -} \ No newline at end of file diff --git a/aspnetcore/performance/caching/response/sample/src/ResponseCacheSample/Startup.cs b/aspnetcore/performance/caching/response/sample/src/ResponseCacheSample/Startup.cs deleted file mode 100644 index 5762f68ba1..0000000000 --- a/aspnetcore/performance/caching/response/sample/src/ResponseCacheSample/Startup.cs +++ /dev/null @@ -1,54 +0,0 @@ -using System.IO; -using Microsoft.AspNetCore.Builder; -using Microsoft.AspNetCore.Hosting; -using Microsoft.AspNetCore.Mvc; -using Microsoft.Extensions.DependencyInjection; - -namespace ResponseCacheSample -{ - public class Startup - { - // This method gets called by the web host. Use this method to add services to the container. - public void ConfigureServices(IServiceCollection services) - { - services.AddMvc(options => - { - options.CacheProfiles.Add("Default", - new CacheProfile() - { - Duration=60 - }); - options.CacheProfiles.Add("Never", - new CacheProfile() - { - Location = ResponseCacheLocation.None, - NoStore = true - }); - }); - } - - // This method gets called by the web host. Use this method to configure the HTTP request pipeline. - public void Configure(IApplicationBuilder app) - { - app.UseMvc(routes => - { - routes.MapRoute( - name: "default", - template: "{controller=Home}/{action=Index}/{id?}"); - }); - } - - // Entry point for the application. - public static void Main(string[] args) - { - var host = new WebHostBuilder() - .UseKestrel() - .UseContentRoot(Directory.GetCurrentDirectory()) - .UseIISIntegration() - .UseStartup() - .Build(); - - host.Run(); - } - } -} diff --git a/aspnetcore/performance/caching/response/sample/src/ResponseCacheSample/Views/Home/Index.cshtml b/aspnetcore/performance/caching/response/sample/src/ResponseCacheSample/Views/Home/Index.cshtml deleted file mode 100644 index 26e337fa5b..0000000000 --- a/aspnetcore/performance/caching/response/sample/src/ResponseCacheSample/Views/Home/Index.cshtml +++ /dev/null @@ -1,110 +0,0 @@ -@{ - ViewData["Title"] = "Home Page"; -} - - - - diff --git a/aspnetcore/performance/caching/response/sample/src/ResponseCacheSample/Views/Shared/Error.cshtml b/aspnetcore/performance/caching/response/sample/src/ResponseCacheSample/Views/Shared/Error.cshtml deleted file mode 100644 index 4852442680..0000000000 --- a/aspnetcore/performance/caching/response/sample/src/ResponseCacheSample/Views/Shared/Error.cshtml +++ /dev/null @@ -1,6 +0,0 @@ -@{ - ViewData["Title"] = "Error"; -} - -

Error.

-

An error occurred while processing your request.

diff --git a/aspnetcore/performance/caching/response/sample/src/ResponseCacheSample/Views/Shared/_Layout.cshtml b/aspnetcore/performance/caching/response/sample/src/ResponseCacheSample/Views/Shared/_Layout.cshtml deleted file mode 100644 index ea52730044..0000000000 --- a/aspnetcore/performance/caching/response/sample/src/ResponseCacheSample/Views/Shared/_Layout.cshtml +++ /dev/null @@ -1,67 +0,0 @@ - - - - - - @ViewData["Title"] - ResponseCacheSample - - - - - - - - - - - - -
- @RenderBody() -
-
-

© 2016 - ResponseCacheSample

-
-
- - - - - - - - - - - - - @RenderSection("scripts", required: false) - - diff --git a/aspnetcore/performance/caching/response/sample/src/ResponseCacheSample/bower.json b/aspnetcore/performance/caching/response/sample/src/ResponseCacheSample/bower.json deleted file mode 100644 index ac5514caec..0000000000 --- a/aspnetcore/performance/caching/response/sample/src/ResponseCacheSample/bower.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "name": "ASP.NET", - "private": true, - "dependencies": { - "bootstrap": "3.3.5", - "jquery": "2.1.4", - "jquery-validation": "1.14.0", - "jquery-validation-unobtrusive": "3.2.4" - } -} diff --git a/aspnetcore/performance/caching/response/sample/src/ResponseCacheSample/gulpfile.js b/aspnetcore/performance/caching/response/sample/src/ResponseCacheSample/gulpfile.js deleted file mode 100644 index f79a1eb4f1..0000000000 --- a/aspnetcore/performance/caching/response/sample/src/ResponseCacheSample/gulpfile.js +++ /dev/null @@ -1,45 +0,0 @@ -/// -"use strict"; - -var gulp = require("gulp"), - rimraf = require("rimraf"), - concat = require("gulp-concat"), - cssmin = require("gulp-cssmin"), - uglify = require("gulp-uglify"); - -var paths = { - webroot: "./wwwroot/" -}; - -paths.js = paths.webroot + "js/**/*.js"; -paths.minJs = paths.webroot + "js/**/*.min.js"; -paths.css = paths.webroot + "css/**/*.css"; -paths.minCss = paths.webroot + "css/**/*.min.css"; -paths.concatJsDest = paths.webroot + "js/site.min.js"; -paths.concatCssDest = paths.webroot + "css/site.min.css"; - -gulp.task("clean:js", function (cb) { - rimraf(paths.concatJsDest, cb); -}); - -gulp.task("clean:css", function (cb) { - rimraf(paths.concatCssDest, cb); -}); - -gulp.task("clean", ["clean:js", "clean:css"]); - -gulp.task("min:js", function () { - return gulp.src([paths.js, "!" + paths.minJs], { base: "." }) - .pipe(concat(paths.concatJsDest)) - .pipe(uglify()) - .pipe(gulp.dest(".")); -}); - -gulp.task("min:css", function () { - return gulp.src([paths.css, "!" + paths.minCss]) - .pipe(concat(paths.concatCssDest)) - .pipe(cssmin()) - .pipe(gulp.dest(".")); -}); - -gulp.task("min", ["min:js", "min:css"]); diff --git a/aspnetcore/performance/caching/response/sample/src/ResponseCacheSample/package.json b/aspnetcore/performance/caching/response/sample/src/ResponseCacheSample/package.json deleted file mode 100644 index d4d71a996e..0000000000 --- a/aspnetcore/performance/caching/response/sample/src/ResponseCacheSample/package.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "name": "ASP.NET", - "version": "0.0.0", - "devDependencies": { - "gulp": "3.8.11", - "gulp-concat": "2.5.2", - "gulp-cssmin": "0.1.7", - "gulp-uglify": "1.2.0", - "rimraf": "2.2.8" - } -} diff --git a/aspnetcore/performance/caching/response/sample/src/ResponseCacheSample/project.json b/aspnetcore/performance/caching/response/sample/src/ResponseCacheSample/project.json deleted file mode 100644 index 16f2fb8849..0000000000 --- a/aspnetcore/performance/caching/response/sample/src/ResponseCacheSample/project.json +++ /dev/null @@ -1,51 +0,0 @@ -{ - "version": "1.0.0-*", - "buildOptions": { - "emitEntryPoint": true, - "preserveCompilationContext": true, - "copyToOutput": { - "include": [ - "wwwroot", - "web.config" - ] - } - }, - - "dependencies": { - "Microsoft.AspNetCore.Mvc": "1.0.0", - "Microsoft.AspNetCore.Server.IISIntegration": "1.0.0", - "Microsoft.AspNetCore.Server.Kestrel": "1.0.0" - }, - - "tools": { - "Microsoft.AspNetCore.Server.IISIntegration.Tools": "1.0.0-preview2-final" - }, - - "frameworks": { - "netcoreapp1.0": { - "dependencies": { - "Microsoft.NETCore.App": { - "version": "1.0.0", - "type": "platform" - } - } - } - }, - - "runtimeOptions": { - "configProperties": { - "System.GC.Server": true - } - }, - - "publishOptions": { - "include": [ - "wwwroot", - "web.config" - ] - }, - - "scripts": { - "postpublish": [ "dotnet publish-iis --publish-folder %publish:OutputPath% --framework %publish:FullTargetFramework%" ] - } -} diff --git a/aspnetcore/performance/caching/response/sample/src/ResponseCacheSample/wwwroot/_references.js b/aspnetcore/performance/caching/response/sample/src/ResponseCacheSample/wwwroot/_references.js deleted file mode 100644 index 9b2a79166f..0000000000 --- a/aspnetcore/performance/caching/response/sample/src/ResponseCacheSample/wwwroot/_references.js +++ /dev/null @@ -1,7 +0,0 @@ -/// -/// -/// -/// -/// -/// -/// diff --git a/aspnetcore/performance/caching/response/sample/src/ResponseCacheSample/wwwroot/css/site.css b/aspnetcore/performance/caching/response/sample/src/ResponseCacheSample/wwwroot/css/site.css deleted file mode 100644 index 1eaae3d043..0000000000 --- a/aspnetcore/performance/caching/response/sample/src/ResponseCacheSample/wwwroot/css/site.css +++ /dev/null @@ -1,34 +0,0 @@ -body { - padding-top: 50px; - padding-bottom: 20px; -} - -/* Wrapping element */ -/* Set some basic padding to keep content from hitting the edges */ -.body-content { - padding-left: 15px; - padding-right: 15px; -} - -/* Set widths on the form inputs since otherwise they're 100% wide */ -input, -select, -textarea { - max-width: 280px; -} - -/* Carousel */ -.carousel-caption { - z-index: 10 !important; -} - - .carousel-caption p { - font-size: 20px; - line-height: 1.4; - } - -@media (min-width: 768px) { - .carousel-caption { - z-index: 10 !important; - } -} diff --git a/aspnetcore/performance/caching/response/sample/src/ResponseCacheSample/wwwroot/css/site.min.css b/aspnetcore/performance/caching/response/sample/src/ResponseCacheSample/wwwroot/css/site.min.css deleted file mode 100644 index c12e1a1525..0000000000 --- a/aspnetcore/performance/caching/response/sample/src/ResponseCacheSample/wwwroot/css/site.min.css +++ /dev/null @@ -1 +0,0 @@ -body{padding-top:50px;padding-bottom:20px}.body-content{padding-left:15px;padding-right:15px}input,select,textarea{max-width:280px}.carousel-caption{z-index:10!important}.carousel-caption p{font-size:20px;line-height:1.4}@media (min-width:768px){.carousel-caption{z-index:10!important}} \ No newline at end of file diff --git a/aspnetcore/performance/caching/response/sample/src/ResponseCacheSample/wwwroot/favicon.ico b/aspnetcore/performance/caching/response/sample/src/ResponseCacheSample/wwwroot/favicon.ico deleted file mode 100644 index a3a799985c43bc7309d701b2cad129023377dc71..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32038 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 R1gwujQ%z5`RQctb{{l=|@gx8M diff --git a/aspnetcore/performance/caching/response/sample/src/ResponseCacheSample/wwwroot/images/Banner-02-VS.png b/aspnetcore/performance/caching/response/sample/src/ResponseCacheSample/wwwroot/images/Banner-02-VS.png deleted file mode 100644 index c9f461137e80b7bed7a75d5f2d15d0defcfb2bfa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12388 zcmd^lXH-+swl0ELs44;?O;kid2)zfCUIl~@dZc$kFVa++6h%Qg1Ocgm(4-SU5D;mG zUL=v;YY3qwdGWkA&UyF!dGDTa$NlsEBpGXG&pr2CbItj!Z+)@)&(!H@ZqrauP|#~? zs63~jxadnkalz>dC3&PtNv??e#pbJO;%f+X@C~r`wx@V%2eq-kqv>w#X#d>a+Ahee z&t9H_Lim!V%2T7jnXS32pDdQG`A*Sb&AI%#JE$KTS1Ds}Ro}Wc^-MT!538}iud;%? zC4cSUZAHdn(A53!Vn=(~k-}n(H?Y1vSW32TuBvyAm&B#7-af1P5jl0IgVN6JYW&3u zGrwlCURExLR>W(KkAud?&yLP=WM#)e4ZBF(+-$`z24mdnwGNIW`+FQEE ziYs99uTJLw_3_G+`hOq)=f!`G|HqsDG5)WM|NQ?yEdC$k|GfC`-}H}%|7SfA_Dgw0 zN%2B$UH3?w@BQ-2hSrjrwy!)S$&V+6@m=leim^y#}3`jFv|%#_VJY!Cl%+jDjwhThO}qnc@O&S{j|?9Rggn9GG)%>q)e` z?W0WE_l?qwEDa$uANIGwMvyb_)!OySY;f4OAm)BU$VA$J;g7!o?!pfSw81tj5(gpN zTm}@{n8y-20%>4#tG9f%KmC0x%3I|(H@OkS<66$}Sq??m%VpL%MP&U-GTRBiN-5fI z*wu2l*ea+6pN8#ciJD9i91w4&rtJ8{WBRW6U?DEyA+yq0zojA#$-ylstoyQ9{#bv` zaP-?kx~Gkl6c2KI;Aw^7O`k`$d=}FxU9=sFt(@O;hu1GcFR#D_$|?tcfGhogx#$h* zzj67pw~19SFn!JpgqB;qB$mg2>T6tvyOt@!+VnxMPx#$Fpy1cij}n?FUx|G5%Yj?N zAD6anlqUko;pDLi{W54Dm)evVsM@3~FY^k@pDwnMtNR_v-j& z(Cc%_FTI|wFHluCjAF;hFBl`9vcJt1Ppy99@<&+kNh9T}c~__G;E?cS?_04cwE+5z zvT7IS&>&@^XZMHm{IlY9$PmDsqZ6cFBe;m8gW`z?t#Qj(ZPr!H<0W`RbwiXuI*%{y z#TW7x$a&EyVefYIUTlhw5Qu>yIXP8;B3-mh+w~@8#}|ur zXu8L1@)|C9Le2;ZwQsA$^KE<92ED9A>|q0|JYoApNI*G%nOw!lUQ$q`bC93%%DUNO zezW#xOYuTR?pDQb|Ko_!-MH3TJ8O0Kr6!k#0hM^y%po{XlzI4k?tRec zL0l{LHMRQc_*HO+3QF)p>6e$!#(OS9&BD(zqkEdPsM0-kfpvz51Ic|0&Oxdx+^$~c zluR1^%!ZFl=k|ZNzY}1sFl+Ii+nz*LEvIaoTTR!7Rwi9|pk)rl-2`GyYQ~nc+&0W- zm?^J-g%N%HxS!+fLbQpCXIb^3n9; zyPZ*QtjZ7YqR-0c)Enk^1&s~&TJQmN{$JX}U(gj@U@{ZtOah%ANnsl1VXHfIBo?A2 zMc3$voc)8Z8a>JDkow-DRj3AVlVYAmjnA|&658~#%YM~iQ|*dyT#?S1Ud_Ynx!1vV zE`wJ;qTR;R=z{MnUqie|;uU!1B?g)azd_Z5JG`Gjo9??Yz;dONIUx$<3MSWy0^S0> z7pTLWUw2E^*I>6}CyiL{SbURiBpYYvZq=-zEQ&-wn!0#%s7b&|!Lm}ry>~4AS4jg< z?BZ?VOJp-)HO(h&^gl18^Jl&+>d0p4BhrKUUbmS}Ed4R>h@%`QxZ-T#T_i9p`J?`;}wvuTTf?;6#UD zqTx~&lJmK6fQS`|xH{9ko&lW2Gx#wUugsSS$&Tw>zu|CbbL?c`LFcz7$JMm`UVF!% zmi{Kqs*w%kdL8x)?YzryJT&T9Btby5PqmM~8Q%$HQYetKz8%+_+=~{l@*MgOQ&nr| zC~^j_lp%sXeAEUYXC=2hUKf-UTN*N70qeiokOA>HM0zsco%lS+kbK`XM@wbU;GQxD zOP@wx$B$|BHsJU1&~}As>CqNF8F<-H-X5w8^Y5>E`f%!l8Qu*ePq=Hp5j0q8GGsJ% z9nNuoN}Q8()icEnn7Xe;ezLPXV=&4t$EUJFO61P|QE>NNurM%P@I&IO{}pFpW@i53Km$gzw6jw#~Jbtpb!3KG}x-Hub-FWM8?R4L_6_!s;hjT zaMC!86+bb6aM58;7Hd|bmXa+jsk2+v-)Je7uMeNhJA4i5#Y@fA64|XAio|cNrJhNC zK{#Bwl^3FvQ9MJ}MHp?gL6vQSmzwlC&82?V3Ax-UAO zZ(~!+V<>(5-Y4_GNO+asXg#@bEYa*4HrE!m0tGwA?<}Sz_4Wkc&RW{1BDCo=YccKW z2Rn2b<%c(P1gV>Ux`;>+O8z)rk?a7W@s>wj%jP4tSe72z4pWZ}-1{W|Lhx?95W0J$p zO#$nedArP3`H2%lVVC3Vi{QzlNb?s#(DDX(M|wy6$M+b*4tv)uc7ahyQ0UQ6?Kf_V zk*ZdOe&N=L?Uw{{`Hs@0PLfwDYMw{(E) zgNJQ*aY2*UJvQUo4?Sl0j#}+dcf!5crM*;*=PGijsPedZ(=X{beRGP0Qw>rx1ek`6 zkMQuqfq)&PBSEUi$GzlGJO#~_(o61V+BlurlP?Z%r9zsDg24`|qI#3N7*XTCR9jOB z0M_y%+D{)JF`rucUD4P?;fa4eE$Ci`Bc&eRV&N;pfC) zZq`_QqA2)i6mdkSV_)T@75$hr34@959}`#Px6S51r*j;OK_ml!;zQ6{`lzHat!gh^sqwJ_2@kiu)h zxOw)1Zg*~CfuJqQ9l&hU^_u2twW;PV z4ArGd0$%{G^N!5!GF4c2UoWVWCF{IAv>+L27x z*11WCS0kO38=k1iq$Y$cyw>L>oW9HAtNLcA0i+rQf1gn(eHku2)( zM`M5I@Vr`HhqDb9=Y}I|=C1|;fES-tm=jjcB;7*xiY%1ryEY?)4varvlj}ls&L7aZ z(#=Myuu8JGfM|XINRh9b9(;Z1AstN4k&kPWzT@&!htYJi%e3CaX7uQ%N)g@MC+U)3 zEku5DA%k7VZi%)+88bHWyXuC>i8lZ`e8C6&eehf9~pQ%cKLsD{AkAg>2@KVV>mr_(lb^WW5Bx%4U}WTm&}B zjZXvghC7_HN7hZGvr8Y7ySpVn+D>QgdcN7icly-~erqCxs`<}}#Oa9yyIXB^^Nx!V zQmV_>6rAUM_*hCRyXJGupA$5?=zVtLRM$82mSyIRSbK2|m72Kn{+V5`F+m7YJmsqL zOb8hooU+cL^|h?CK9qN+a9T^EkN-Ft24A@@bQ4VaGZs*;zUqctZlg!p)2P!e%P1^A zX?`j10PRQvl`ods`F_b4$=#|Y43L4~*!7l4=Ry2^21 zGV1%{JSzO6wU>eF$sN28^zq3l`&=-3Lk7hGc=V{O;?c=CmS2eUV*E3P3=9qBAW_f^ zdD^nJqcH@#*`#WXjcZdmR6b2zdmRp?4K)cmMJsYl87d>Kj-lo z#|fwrDD4wQX`e2@^+I^EN9?#1e6dJJHD(5jV`*mHF7p6+?^z8NX$D0FXH@7URW8Y6 zV(^rbjQP$Acjs8#If(QaC-(&}Nhb?UNzT3-h`2bdNlcP!{!v?`zPXjDxyV?uCd_T) z1a*(l1!||Cu^AUK<;p$%(;6PO-)gZ7t8)r7H66;(V41Xoq`CE?hR!eNoJV|r5V0$d zKKNxjxL!Gs0XiTIuCC04Ve-&}7*~eAvL=bz(8jWw!114D>=T1cTa#rsA9pg3j`}rN z)k5)k``LcLM15=e6MmYQy!x46(o(KqxY5f5V{WdV*UwXSna;BKmXcRAja3aGy{ve( zx+4*nC$u7;3+gui_V&2Dzpv)KD0nL|y)$x6!Vr0_!DA+M)t??3mH5F0#E#Ze+3*N) zs$xiH#564r!_K&Eiyp+&% zyYE_2gy0+*5$9~qH8=k}I5_y2YpvHJE>X`#vYw4d6ek1z+P2y8oRIzTA#ga_uj^E% z0j&?Qp`lbuY>5@|!iKU(&j?nLF((=JxlcvZsac-Jfz}0$9_1zFY}7~`G`meG>s*4u zcCeEE1?^-&xe0F%gPh)cz~dBUB6`))Nh9~qQU;W8pVSlK@j<<3PQppf>g~7EEaA*h z6f|#N{P;XLXHn|n!=R84VbNkd7P|F)_?efYV3ud!&yb>5FURUSV}e?j6$z6}O-bV! zZ)da4cNPW1PjZUvo@ek_h#-?dWm=qV0ZBR>tQ)7LJtgJbe1vZ67`RdX6^V5t?e3-P zWykBZn(uN-ptA%*@U$xOA|I&w3x1Sce9yN?w^bym%JR=#3UT$7k1o6P5NOo|x5W12 zlasQN)F8hSTMV{YWK^pDy|ErLY&MHavNt zU88k1WnCX0_6Li}*fWrl%bnpI-#T+hx%ErT6Bn&bTj{uZ&}my)bV(x0sA=Og#as#~ z#uBf^{E5RD;BHY};_wVd-XxHL;cb#}!QQuBQ_?&A74m*O*(EsEAr9bq_nVhS7Al$0 zf@aU9%8@mG8fstg=%QXshdq-Y>!1#gY2DGp7`5&{)N5li-P4+Og)od$HE@lTlt2W83-1+5CCgMM<{@nM4oJ%o|H4 zfsmtXu3gAaE)QsyeQd(9k&NH8APp{6rW-cz+LgBn53KZhZcr6`etw&obogu-KzbzB0t2>hCA&IS5}e$fol%KaYk>>v z^~kd!i;w+^Cb*bf*AL~l1e>Wv*ONf^&AvL?#JnifGyLfFpcEiy-lCTNhO5n|zaRjr z3q7M@-qcSIKl;u6zIz0@UbbrFPHv6>p!aNt9kZV^Ew}p==d9Y@n`eaF>1?a2O^FX`X4qt=G^+V z3C)&ozlTlp0om{O3=a`<^oE?%&CL{x4|Bsqj@n5FZ{op5(G4ts$7jFa`H+_0pU|$l zy1f`{%(%tL)?c>rlRvN7;`l?E(-mWl+b51+*$rpga3Q{(Y(OeQWg9E)tZ3`|>eDA< zJ0G~8({`%ui++cRSf05qM&#<&F{m=#SEC&(!ap=8b0=exi{!RO(pO0S;&X@YQ@B0a zZWQH32R?c8`;QM)hZQHdeVJ8)PK>thFxwC;Cu6qt3t)3gwukuA^X z?_zU`T*P*Pj=Arh3uQhLLGcsAZt3d4x!bckQ3ZO$%kfCwRQ3^7$;vEm(bF^rIbT zn4gvH2`f}iTm4C-z=P8Bx@M;o*x1)Vw#^fJ0f&PD9R1gPUbDVYMR z*E1a3aLML7vmZ9fSP#alx^#~^+XjhrIqL$EyY?S!c<5Z0HV!3nGucW}m@w^=|5%_&c0Y_YAqpUfwtwAoR z1~VqdHb*&YE5;i+`IWKV6@!N;rfyd7HUSQoY0G?~;1Sz|OhYnXVv6u^C{t6&OqSTS0ONXG2jX!ecWbCH>JM5MY8yxv&MBZZC zVe&5KefRZ(pgzN>)V3vq=$>yIJ3$WT=3(PCqs;pug2Jnnus=un2Hd`%!dbq{C#T13 zCeg@5m20ywh;L1NIlL2~Y3=jw3uE@Iqj$WQ)CJoNt=jV-aW7xUioibGOH~)y2fKmY zXksn(28+pOlaM`4ieZS^$9=5;y#sc}oa1Q^G4Z<=A~^T62`rDP{lE)_tq_oJ8PfIq zEV?kUjAor&RjNuva()4jUDmp0oWRg0M#St7it$AX-LZthp!$rxp+Nf8vEnzURRKxp zq~vx9XFs%(_BP+A^UtI266~T7o}Z0Am>D)Sv7P}^3po(olT8P)JbHd%tpl6Le7)%ZO6SaknpZu zwVrH9O+st};*}|VLHHk)(A2%B`3|oS>)#$WUFaMNZ4i)p~VkhPEv!3 zace5OinnWgjnSw4+X=$0k|i3#0>^qUh&F2}?oTJhgBe4BM5%CK0#^jDBlEY3GY?p3^_&5wvr^@RwWY`O57u6+SjD2F5gb z8nbgByKVHBQ(L{jH#uz?Z`^foH>BzI>qkbY5In)fH~hqH!w_~UVJlt93f&q%`hsS@ zb()vn;T-yP@Quml7fas4MrIPN5a;njtC|pLQV`$=j3z0EZ?v6biqCUpfJNE~(jt>m z_!suzL|X3+2?4%7OSz6v6O~VR9kxqKmunDOed(b{vd8BV+ts1xlb4A*>&b%^Uftbm zd?BhG4_80%tQ0;%g)!r5<3ykE$0Yo`zr{24m`n{$jguElWcD>sQ5Vlhgzm%qgi9IM z#72yztk~}UWXh^n-LBnkGB#;+8`K`@)AKZo!_9N3rs{JhLeLP#(W=zY2 zjce&Hb?mhB_qz()^ZYEOPp(}(%Js-{u|Q3(3lSRU4{Q8sf9FnQGauOXmOAvT-HU7( z$zti^dfs3H;us7n2x6KyzIr3a5 zJUho*d&(>M-f!=w)!oRjHOd@hk#59`2$av1Iare?BOOY>Mn6qCfO1Re$lAe8`Qq_-g$J!F7BdAgLgoe+2i;D&!Uj8IU&+%XhY z++wY_Cwy{t*<+W4dd^9$Zk2wrInh+s&vTp1!w3$0bV)JDQmGK#JDJ%=+2lG;7&9;C zJ1<}{?DKP!m)n=QFPj8PU+umTcJaWC?Evkxob6d2JQ046l<*!!xMQl@SOjZz*XQ#t zzbEfH^bn@J@I9Dt!_r#~^6?xBexz&%V#~sP(dw0lhJ@|TyHqFAw56}I$ zao^BS0(7#`ysvTq&2>AAzns{sn>hRs<=rie^DBMnwJV7CaI$D}GD`iNv$PEkuHV&V z6qAb?;S ztDw?$X`>CR7|@;3r<4zal1*4@$ixVC6`S~M#(<%X;{07DGOmAomrxk$d{}Vaul#pi z@$-g}wuMP{u+5Y(su0{HMi%5NU|6Av@)`wL5Dx%Vhn>t#WZtJBEGe}1CQQLX8ta)G z*^k7Q&M`?e(5#aWY*>t!vxCKggVkLX#dJjsxqpQ;7YuN20N)de7P;foIU&a4k^`3`lJ?wqR1Rk{U=t%f&XSwO$f zOj4z0%xx3h;z+*c22cm)R&Qg??he(+et~{KOWQ#M5!CmFk?yx?FXY@~D-BTCw&kIH z_%+uV`LYrohE*i43^XnKSDMspcJc;E2Cfy+);@#m55S5@=Zg_gj-e5#XCKJ)!JQ0C zEAMTYI!KH6(}{wAo~yV8SC+2lgbk*X!QuYbN7!M)$!xz67d*O=ymJm)f|`v$O3Cy= z3lwJl179ETz$&B=8&0fppUj$;qhVoX1%{AhRv6#>U(~#J>)5_ zF5VRY(XVT56CFk~)ZvfX9}FC>xz~6S7lmCJWS=+nYdC^`WA~K!q^NJ_P&zM2W%2yE?_%+We=8a{g9x+j zPUK4DOQt4rQh8%u#J$qYs^qG-VHEbGn-TgXe}tYg23{WOLbnUO%vW#d*!Op;au6`2 zW*GZ@V|eD*>`3Z~i|Kns<5r)~_+iq<@qSS@lT!3W911Q<@+~9H*I6 z85cbp<`)t^x=$GVdF@uOr-X*DCKph@waSZb_)e-!!u{*JX$YIxj5;Hi?H2-CoK9R= z-eLxSy2gjqjohggW_k~ZD}D9c?Z5ZWa!X0Sx-;l2V&2<57=Jxl&MkL6{Gcfr6J8@I zf0bw36_O3Hf*~K30cUS?*%!`KTtj@QycE*^IXRswp?L-Nw0Vy=>>y$xYL#UeBG00( zC(gMOidzpe75XT%;!;$)e#`FlhX_HYDj2lqZf67oT^7%c*nIclh8R0sJTP<_`^#2v zHQTby>05@&#z))gNz9Md&sg@MbL8i3yM?ASS>h_AnPDMk&7CWwU=i{`K*V_o;7sj=MN#42w90So+%sjx9(1GW5N&nNj28fNo{!v zml=DB3zhE!{2b9EX;!`~spx$yqAEFo7^xU?v;=E-sX!QZfZ*q6;tX|7tRq+Tl5ZlaU$X>D*UoVPs@6 z^>9t)F7aqHG{a>zv9rBz=l$<#fkpVj3Y(<)3j@d^C_r7eEog-CtFPku!TjEp;Yth9 zv*u-=u69>Og)AfI*gCUVc}evCX#PJcf~s92hctVhx_}UzrFD&^yw+q=@a4 zL6DUVVp0(2GRg;8^(MHjnm3LI!AQ0ZDg&%2gpEvMzxp5@1I*dG^s_kl@4WOGCMbg52j2 z;#a%%xP^Gc4Rk@(_=PV_Jua?tFqs2_gMFo+bezVKOmF-2jEA zWu34HDjWU7tUYu%FF(e$No%Ao7r?PTFs=dm{Pc44;57&lOiw15r%6_Mg2Ce;UdY+V zc>=5BWa@dhB`uUR6CAX1b)YQl*?KOfuIl^EnJeIdju2+m$FDR?N*yO;B>2=ClfR?q zRD%P0a|26kjWyjS_F^XaPQd`j7quW%>2+PQnB<)uBa~z3N@5H|LB6Hz@F%a2f-eY# z;dbIaYVH8$8!;@~cQX=uRUv1mA9IOrdv`NI<_9=Z@O+0e|C?^wpImLE>|o+(^=g3c z&A>J6kYGC=Ba|IrTnhiIH%r#Q+PQH4O#gNFV|MK5XHWwA2GZSf-|LqWEIFSUmmn=PYilfe6ngkodY_;nWP^-uWB7-a6q zNWM72_o_3LucVzIoJ4>Tyh( ztUt*XUtJU!tbUhE&)DeG*r3qW=`AVaNsFrT8j~_5viPX)k*WAciMl}O6(iMZn4SEr zos%F?OvGYPZsxh~{L&TlzDj_r`f6-)m=4WblkQ0iD<&@0;s^N}_v82l;? zd2DaF42oWKB384geuCI{m+K#^b=E=6W_6 z^FNV?E%AQ%qr%eqHvh7Or^bIL>gJNuWOlflT(C8$f9qh#022hMY=`N4=|$V6=rGK) z>-Cf|1dI<4luq^f^t>G^O17-XnXBLgQUfeOXxjm@I)UPeBz z#{a|=Iu1@K_s)I1vHh$^HhJGfROV|+@M$K>%H6EF(iTm8ADtlsdSSPpw@BvL5>P|R z?`fR*|0;o^ub;21|CQKKd{Dn@dgDMRu+?+xOZIqK#`;*A{()GFpGBn^=Y6)I|-F!a?cSW!}PYyb{#JxAXS4uv!Qa(i= zpr;m;`Bu2yuYQD@J!3xp4uM%p2q?HKJR1#W4tsMALGhwyP4g4-rHymoL6>scL`pz; z`D}aR>33=$hSZyk3O9>8+QR$t7o^Ntw>O=pM(d9Q@ox4o&=oN-cFzM1%@ z>WE8aY+^Y?Z|>eiZvyOz)v4W=6Nlv{M7LS%Wsmhh9+D1?3-7es^KVkT_&t{D2asj1 zR{CXTA~EpZTD^IL9QR!p=a98{oYpI@X1IX+n_^lvI+=K7l*rWP ze06?FNki*jAzbkrV|Cr-ssIx-yWF^j-`#WbQB+~%Uu9s=@cz#9{C<3@Pkel`wrk?! zQlS5QHWilNT&zB*0GCbRq~}TGWuCqzEpc;0r~O+*{E+N8wCb0$u#yrjMsC+B-VaXk zS74bmj?-QcSlOzqbb@YITy26&8Im{l;pXgP=n~IPhLjTCw9eA{-{*BPL|=3lkk6vYX6(1 zuK$)k_FsD1|LFF=Z|q+d{|bx$KZwD9Rp9<%=if5+Z{75FcK+{5?f=I-`0w@Lzs&7_ kI|l!050Ym{fDVdhD<;7uzEpbT$Wv&lK2t#`y?FCK0I|=rUjP6A diff --git a/aspnetcore/performance/caching/response/sample/src/ResponseCacheSample/wwwroot/js/site.js b/aspnetcore/performance/caching/response/sample/src/ResponseCacheSample/wwwroot/js/site.js deleted file mode 100644 index 82ecce7b4a..0000000000 --- a/aspnetcore/performance/caching/response/sample/src/ResponseCacheSample/wwwroot/js/site.js +++ /dev/null @@ -1 +0,0 @@ -// Write your Javascript code. diff --git a/aspnetcore/performance/caching/response/sample/src/ResponseCacheSample/wwwroot/js/site.min.js b/aspnetcore/performance/caching/response/sample/src/ResponseCacheSample/wwwroot/js/site.min.js deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/aspnetcore/performance/caching/response/sample/src/ResponseCacheSample/wwwroot/web.config b/aspnetcore/performance/caching/response/sample/src/ResponseCacheSample/wwwroot/web.config deleted file mode 100644 index 8485f6719f..0000000000 --- a/aspnetcore/performance/caching/response/sample/src/ResponseCacheSample/wwwroot/web.config +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/aspnetcore/performance/caching/response/sample/web.config b/aspnetcore/performance/caching/response/sample/web.config new file mode 100644 index 0000000000..dc0514fca5 --- /dev/null +++ b/aspnetcore/performance/caching/response/sample/web.config @@ -0,0 +1,14 @@ + + + + + + + + + + + + diff --git a/aspnetcore/performance/caching/toc.md b/aspnetcore/performance/caching/toc.md index 2ebeb929f5..34a2ee49a3 100644 --- a/aspnetcore/performance/caching/toc.md +++ b/aspnetcore/performance/caching/toc.md @@ -1,3 +1,4 @@ # [In Memory Caching](memory.md) # [Working with a Distributed Cache](distributed.md) # [Response Caching](response.md) +# [Response caching middleware](middleware.md)