相关疑难解决方法(0)

Chrome不会缓存images/js/css

当Chrome加载我的网站时,它会在显示文件之前检查服务器是否有更新版本的文件.(Images/Javascript/CSS)它从服务器获得304,因为我从不编辑外部javascript,css或图像.

我想要它做的是显示图像,甚至没有检查服务器.

以下是标题:

Connection:keep-alive    
Date:Tue, 03 Aug 2010 21:39:32 GMT    
ETag:"2792c73-b1-48cd0909d96ed"    
Expires:Thu, 02 Sep 2010 21:39:32 GMT    
Server:Apache/Nginx/Varnish
Run Code Online (Sandbox Code Playgroud)

如何让它不检查服务器?

caching google-chrome http-headers

59
推荐指数
5
解决办法
5万
查看次数

HTTP:结合过期和验证缓存

我在为以下情况制定HTTP缓存标头时遇到问题.

我们的服务器有大量数据,每周可能会改变几次.我希望浏览器缓存这些数据.此外,我希望尽可能减少条件获取的延迟,因为网络不可靠.

我追求的最终行为是这样的:

  1. 客户端请求之前从未见过的资源.
  2. 服务器响应资源以及ETag和max-age(24小时).
  3. 直到24小时过去,客户端才会使用缓存资源.
  4. 在到期日期之后,客户端将执行验证请求(If-None-Match: [etag])
  5. 如果资源没有改变:
    • 服务器响应 304 Not Modified
    • 客户端以某种方式告知现有资源从现在起24小时内有新的到期日期
    • 回到第3步

归结为它的本能... 304响应可以包含一个新的max-age?或者原来是否max-age受到后续要求的尊重?

conditional caching http http-caching

19
推荐指数
1
解决办法
6720
查看次数

为什么我的客户端在使用ASP.NET MVC包时会去服务器检查文件是否被修改?

我正在使用这样的代码:

bundles.Add(new ScriptBundle("~/bundles/textview")
                    .Include(
                        "~/Scripts/printarea/jquery.PrintArea.js",
                        "~/Scripts/pagedown/Markdown.Converter.js",
                        "~/Scripts/pagedown/Markdown.Sanitizer.js",
                        "~/Scripts/pagedown/Markdown.Editor.js"
                    ));
Run Code Online (Sandbox Code Playgroud)

这会创建一个缓存过期日期提前一年的文件,这是我在查看源代码时出现在我的脚本HTML中的内容:

<script src="/bundles/textview?v=cNvP0r6Jo6hsl2Sdzhw-o3kAK7t2JdcNWiG0iIg7Lys1"></script>
Run Code Online (Sandbox Code Playgroud)

那么为什么我在fiddler仍然会看到它去服务器检查文件是否被修改过?是否有一种方法可以修改bundle例程,以便它不添加?v =而只是简单地将GUID附加到文件名,例如中间的连字符?

asp.net asp.net-mvc asp.net-mvc-5

12
推荐指数
1
解决办法
752
查看次数