使用非常简单的缓存语义:如果参数相同(当然URL相同),那么它就是一个命中.那可能吗?推荐的?
我正在尝试使用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. …
我有一个休息端点,它在GET调用上返回一个列表.我还有一个POST端点来添加新项目,还有一个DELETE来删除它们.这适用于Firefox和Chrome,POST和DELETE适用于IE11.但是,IE11中的GET仅适用于页面的初始加载.刷新返回缓存的数据.我已经在Angular 1中看过关于这种行为的帖子,但是Angular 2(发布候选者1)没有.
javascript http-caching typescript internet-explorer-11 angular
在WebAPI中为公共缓存服务器设置缓存控制头的最佳方法是什么?
我对我的服务器上的OutputCache控件不感兴趣,我正在寻求控制CDN方面的缓存(我有单独的API调用,其中响应可以无限期地缓存给定的URL)但是我读过的所有内容都是如此far或者引用WebAPI的预发布版本(因此引用似乎不再存在的东西,比如System.Web.HttpContext.Current.Reponse.Headers.CacheControl),或者看起来非常复杂,只需设置几个http头.
有一个简单的方法吗?
我正在尝试在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) 我正在使用带有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调用需要时间如何才能使这个工作?
我正在提供旨在由浏览器无限期缓存的静态内容.Chrome正在按预期缓存它,但仍在花时间"下载"它.我使用的是Chrome 46.0.2490.71.
正如您所看到的,内容是从缓存提供的,但内容下载仍需要68毫秒.这导致svg图像在每次页面加载时闪烁,即使文件被缓存.
以下是隐身模式中页面加载的相关时间线信息:
每个事件的"总时间"和"事件时间"字段为零.使用本地提供的文件(但仍然来自缓存)复制此项,"接收数据"事件只能看一次.
一些有趣的注意事项:
有什么可能的原因?
如果HTTP响应返回Expires和max-age指示哪一个使用?
Cache-Control: max-age=3600
Expires: Tue, 15 May 2008 07:19:00 GMT
Run Code Online (Sandbox Code Playgroud)
考虑到每个人都指的是不同的时间点.
我没有找到Cache-Control:no-store和之间的实际区别Cache-Control:no-cache.
据我所知,这no-store意味着不允许缓存设备缓存该响应.另一方面,no-cache意味着不允许缓存设备提供缓存响应,而不首先使用源验证它.但那个验证是什么?有条件的?
如果答案有no-cache,但它没有Last-Modified或ETag?
问候.
我在Github页面上有一个基于Jekyll引导程序的博客.
我的问题是:每次我在网页上更改内容时,都必须强行重新加载页面(CTRL + R)以查看更改.
Jekyll或我的浏览器似乎没有意识到有更新版本可供发送.
如何配置Jekyll以更好地处理此问题?
http-caching ×10
c# ×3
http ×3
caching ×2
angular ×1
github-pages ×1
http-headers ×1
javascript ×1
jekyll ×1
outputcache ×1
post ×1
symfony ×1
typescript ×1