在asp.net

时间:2016-05-12 05:58:49

标签: asp.net performance

我在应用程序中有太多页面,基本上加载了同一组xml和js文件,用于客户端交互和验证。所以,我有大约十几行,例如<script type="text/javascript" src="JS/CreateMR.js"></script>或类似<xml id="DefaultDataIslands" src="../XMLData/DataIslands.xml">

这些相同的文件包含在每个页面中,因此浏览器每次都会发送读取请求。加载这些文件大约需要900毫秒。

我试图找到一种方法在登录页面上加载它们,然后使用该临时文件作为源。有可能这样做吗?如果是,我应该如何以及在哪里开始?

P.S。指向教程的链接也会起作用,因为我目前还不知道。

编辑:

我无法缓存整个页面,因为页面是在运行时根据不同的可能视图模式生成的。我只能缓存js和xml文件。缓存一切可能是个问题。

无论如何,我正在阅读建议的文章,以弄清楚如何做到这一点。所以,当我读完并尝试在一个页面中实现它时,我可能无法立即接受任何答案。

编辑: 原来缓存已经启用,只是我的服务器表现得很疯狂。查看下面的截图。

使用缓存 With cache (304 response)

没有缓存 Without cache (200 response)

如您所见,使用缓存,实际上需要更多时间来处理某些请求。我不知道那个问题是什么,但我想我应该去服务器堆栈交换来解决这个问题。

至于实际问题,事实证明我不必做任何事情来启用xml和js文件的缓存。不知道浏览器在没有使用特定标签的情况下自动缓存js文件。

4 个答案:

答案 0 :(得分:2)

完全可能并且事实上建议。

浏览器缓存已使用适当的HTTP缓存标头发送的内容,并且在缓存过期之前不会再次请求它。这将使您的网页更快,响应更快,并且您的服务器负载更轻。

Here is a good read让你开始。

Here is ASP.NET MVC caching guide。它侧重于缓存从控制器返回的内容。

IIS上使用ASP.NET MVC的

Here is a read about caching static content

答案 1 :(得分:2)

基本上,您希望在第一次请求后使用浏览器缓存机制来缓存src文件。

  1. 如果您在浏览器中使用F12工具调试网络请求,请确保未选中disable cache选项。否则,它会强制浏览器忽略缓存的文件。
  2. 确保您的服务器发送并尊重cache headers - 在首次请求静态文件后,它应返回HTTP状态304 Unmodified
  3. 看一下Asp.Net Bundling and minification - 如果您有多个js源文件,可以将它们捆绑到一个文件中,该文件将在第一个请求时缓存。 此外,如果您使用外部js库,您可以从CDN而不是服务器下载它们 - 这将卸载您的服务器并使用户浏览器能够使用缓存脚本版本(意思是 - 如果用户有其他页面)访问过也使用了相同的脚本,浏览器应该已经将其缓存了。)

答案 2 :(得分:0)

  • 一种方法是通过在<clientCache>文件中添加web.config元素来缓存静态文件。 <clientCache>元素的<staticContent>元素指定IIS及以后发送到Web客户端的与缓存相关的HTTP标头,这些标头控制Web客户端和代理服务器如何缓存IIS及以后返回的内容。

How to configure static content cache per folder and extension in IIS7?

Client Cache

有关客户端缓存的更多信息,请阅读Ultra-Fast ASP.NET 4.5本书的这一部分:

Browser Cache and Caching Static Content

  • 其他方法是缓存部分页面。 如果您使用的是Web表单:

Caching Portions of an ASP.NET Page

如果您使用的是MVC,请使用Donut Hole Caching

ASP.NET MVC Extensible Donut Caching

Donut Caching and Donut Hole Caching with Asp.Net MVC

答案 3 :(得分:0)

浏览器必须询问服务器文件是否已被修改,因为它将文件放入缓存,因此http状态代码为304.从https://httpstatuses.com/304了解更多信息。

由于这是asp.net,请确保您首先使用

运行它
<compilation debug="false"/>

因为启用调试会产生一些副作用,包括。

"All client-javascript libraries and static images that are deployed via
 WebResources.axd will be continually downloaded by clients on each page
 view request and not cached locally within the browser." 

更多信息来自https://blogs.msdn.microsoft.com/prashant_upadhyay/2011/07/14/why-debugfalse-in-asp-net-applications-in-production-environment/