标签: http-caching

是否可以在HTTP中缓存POST方法?

使用非常简单的缓存语义:如果参数相同(当然URL相同),那么它就是一个命中.那可能吗?推荐的?

post http http-caching

146
推荐指数
6
解决办法
8万
查看次数

如果第一个响应是AppCache(Symfony2)的私有,这样可以吗?

我正在尝试使用http缓存.在我的控制器中,我按如下方式设置响应:

$response->setPublic();
$response->setMaxAge(120);
$response->setSharedMaxAge(120);
$response->setLastModified($lastModifiedAt);
Run Code Online (Sandbox Code Playgroud)

开发模式

在开发环境中,第一个响应是带有以下标题的200:

cache-control:max-age=120, public, s-maxage=120
last-modified:Wed, 29 Feb 2012 19:00:00 GMT
Run Code Online (Sandbox Code Playgroud)

在接下来的2分钟内,每个响应都是304,包含以下标题:

cache-control:max-age=120, public, s-maxage=120
Run Code Online (Sandbox Code Playgroud)

这基本上是我所期望的.

刺激模式

在prod模式下,响应头是不同的.请注意,在app.php中,我将内核包装在AppCache中.

第一个响应是200以下标题:

cache-control:must-revalidate, no-cache, private
last-modified:Thu, 01 Mar 2012 11:17:35 GMT
Run Code Online (Sandbox Code Playgroud)

所以这是一个私有的无缓存响应.

每一个下一个请求都是我所期望的那样; 带有以下标题的304:

cache-control:max-age=120, public, s-maxage=120
Run Code Online (Sandbox Code Playgroud)

我应该担心吗?这是预期的行为吗?

如果我把Varnish或Akamai服务器放在它面前会发生什么?

我做了一些调试,我认为响应是私有的,因为最后修改过的头文件.HttpCache内核使用EsiResponseCacheStrategy来更新缓存的响应(HttpCache :: handle()方法).

if (HttpKernelInterface::MASTER_REQUEST === $type) {
    $this->esiCacheStrategy->update($response);
}
Run Code Online (Sandbox Code Playgroud)

如果EsiResponseCacheStrategy 使用Last-Response或ETag(EsiResponseCacheStrategy :: add()方法),则将响应转换为非缓存:

if ($response->isValidateable()) {
    $this->cacheable = false;
} else {
    // ... 
}
Run Code Online (Sandbox Code Playgroud)

如果存在Last-Response或ETag标头,则Response :: isValidateable()返回true. …

caching cache-control http-caching symfony

141
推荐指数
2
解决办法
6267
查看次数

在Angular 2中阻止IE11缓存GET调用

我有一个休息端点,它在GET调用上返回一个列表.我还有一个POST端点来添加新项目,还有一个DELETE来删除它们.这适用于Firefox和Chrome,POST和DELETE适用于IE11.但是,IE11中的GET仅适用于页面的初始加载.刷新返回缓存的数据.我已经在Angular 1中看过关于这种行为的帖子,但是Angular 2(发布候选者1)没有.

javascript http-caching typescript internet-explorer-11 angular

66
推荐指数
3
解决办法
4万
查看次数

在Web API中设置HTTP缓存控制头

在WebAPI中为公共缓存服务器设置缓存控制头的最佳方法是什么?

我对我的服务器上的OutputCache控件不感兴趣,我正在寻求控制CDN方面的缓存(我有单独的API调用,其中响应可以无限期地缓存给定的URL)但是我读过的所有内容都是如此far或者引用WebAPI的预发布版本(因此引用似乎不再存在的东西,比如System.Web.HttpContext.Current.Reponse.Headers.CacheControl),或者看起来非常复杂,只需设置几个http头.

有一个简单的方法吗?

c# http-caching asp.net-web-api

49
推荐指数
3
解决办法
4万
查看次数

ApiController的输出缓存(MVC4 Web API)

我正在尝试在Web API中缓存ApiController方法的输出.

这是控制器代码:

public class TestController : ApiController
{
    [OutputCache(Duration = 10, VaryByParam = "none", Location = OutputCacheLocation.Any)]
    public string Get()
    {
        return System.DateTime.Now.ToString();
    }
}
Run Code Online (Sandbox Code Playgroud)

NB我还尝试了控制器本身的OutputCache属性,以及它的几个参数组合.

该路线在Global.asax中注册:

namespace WebApiTest
{
    public class Global : HttpApplication
    {
        protected void Application_Start(object sender, EventArgs e)
        {
            RouteTable.Routes.MapHttpRoute("default", routeTemplate: "{controller}");
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我得到了一个成功的回复,但它没有缓存在任何地方:

HTTP/1.1 200 OK
Cache-Control: no-cache
Pragma: no-cache
Content-Type: application/xml; charset=utf-8
Expires: -1
Server: Microsoft-IIS/7.5
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
Date: Wed, 18 Jul 2012 17:56:17 GMT
Content-Length: 96 …
Run Code Online (Sandbox Code Playgroud)

c# outputcache http-caching asp.net-web-api

46
推荐指数
4
解决办法
6万
查看次数

如何在ASP.NET Web API中使用缓存?

我正在使用带有WEB API的ASP.NET MVC 4

我有以下操作,在下面显示的操作中,我的服务方法对方法进行db调用DoMagic()并返回一个整数值,然后我在每个页面上使用该函数,使用ajax调用调用此操作.

以下是我的WEB API操作:

[OutputCache(Duration = 86400, VaryByParam = "none")]
[ActionName("GetMyMagicNumber")]
public int GetMyMagicNumber()
{
    if (WebSecurity.IsAuthenticated)
    {
        var revenue = _magicService.DoMagic();
        return revenue;
    }
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我的问题:我已经尝试过使用[OutputCache(Duration = 86400, VaryByParam = "none")],我除外,只有第一次进行数据库调用,然后对此操作的下一个后续请求将返回缓存值,但这不会发生.

再次进行db调用,db调用需要时间如何才能使这个工作?

c# http-caching asp.net-web-api

46
推荐指数
4
解决办法
8万
查看次数

为什么Chrome会花时间从缓存中"下载"内容?

我正在提供旨在由浏览器无限期缓存的静态内容.Chrome正在按预期缓存它,但仍在花时间"下载"它.我使用的是Chrome 46.0.2490.71.

Chrome网络标签

正如您所看到的,内容是从缓存提供的,但内容下载仍需要68毫秒.这导致svg图像在每次页面加载时闪烁,即使文件被缓存.

以下是隐身模式中页面加载的相关时间线信息:

Chrome时间线标签

每个事件的"总时间"和"事件时间"字段为零.使用本地提供的文件(但仍然来自缓存)复制此项,"接收数据"事件只能看一次.

一些有趣的注意事项:

  • 使用相同的编码从本地计算机提供相同的文件不会产生相同的下载延迟.
  • 切换到隐身模式(无扩展名)会使下载延迟减半,但不会消除延迟.
  • 刷新页面更快,因为从服务器接收304响应似乎花费的时间少于仅从缓存加载响应.
  • 关闭开发工具似乎对延迟没有任何影响.
  • IE 11,Edge和Firefox 41没有显示任何延迟.

有什么可能的原因?

google-chrome http-caching google-chrome-devtools

40
推荐指数
1
解决办法
7140
查看次数

Expires vs max-age,如果两者都在HTTP响应中声明,那么哪一个优先?

如果HTTP响应返回Expires和max-age指示哪一个使用?

Cache-Control: max-age=3600
Expires: Tue, 15 May 2008 07:19:00 GMT
Run Code Online (Sandbox Code Playgroud)

考虑到每个人都指的是不同的时间点.

http cache-control http-caching http-headers

36
推荐指数
2
解决办法
2万
查看次数

Cache-control中no-cache和no-store之间有什么区别?

我没有找到Cache-Control:no-store和之间的实际区别Cache-Control:no-cache.

据我所知,这no-store意味着不允许缓存设备缓存该响应.另一方面,no-cache意味着不允许缓存设备提供缓存响应,而不首先使用源验证它.但那个验证是什么?有条件的?

如果答案有no-cache,但它没有Last-ModifiedETag

问候.

caching http http-caching

31
推荐指数
3
解决办法
2万
查看次数

Jekyll Bootstrap基于博客 - Expire标题?

我在Github页面上有一个基于Jekyll引导程序的博客.

我的问题是:每次我在网页上更改内容时,都必须强行重新加载页面(CTRL + R)以查看更改.

Jekyll或我的浏览器似乎没有意识到有更新版本可供发送.

如何配置Jekyll以更好地处理此问题?

http-caching jekyll cache-invalidation github-pages

30
推荐指数
2
解决办法
2748
查看次数