我正在使用谷歌的"Page Speed"插件来访问我的网站.
我页面上的一些组件表示为HTTP状态:
200 200(缓存)304
通过谷歌的"页面速度".
我困惑的是200(缓存)和304之间的区别.
我已多次刷新页面(但尚未清除我的缓存),似乎我的favicon.ico和一些图像状态= 200(缓存),而其他一些图像是http状态304.
我不明白为什么不同.
更新:
使用Google"Page Speed",我收到了http://example.com/favicon.ico的"200(缓存)" 以及http://cdn.example.com/js/ga.js
但是,我收到http://cdn.example.com/js/combined.min.js的http状态"304"
我不明白为什么我有两个JavaScript文件位于同一目录/ js /中,一个返回http状态304,另一个返回200(缓存)状态代码.
问题A部分 ▉(100个赏金,被授予)
主要问题是如何使这个网站,加载更快.首先,我们需要阅读这些瀑布.感谢您对瀑布读数分析的建议.从这里显示的各种瀑布图表可以看出主要的瓶颈:PHP生成的缩略图.来自CDN建议的无协议jquery加载得到了我的赏金,虽然使我的网站总体上只增加了3%,并且没有回答网站的主要瓶颈.是时候澄清我的问题了,还有另一个赏金:
问题B部分 ▉(100个赏金,获奖)
现在新的焦点是解决6 jpg图像所带来的问题,这些问题导致了大部分的加载延迟.这6个图像是PHP生成缩略图,很小,只有3〜5 KB,但加载相对很慢.注意各种图形上的" 第一个字节的时间 ".这个问题仍未得到解决,但詹姆斯获得了一笔赏金,他解决了RedBot 强调的标题错误:"If-Modified-Since条件请求返回了完整内容不变." .
问题C部分 ▉(我的最后一笔赏金:250分)
不幸的是,在修复了REdbot.org标题错误之后,由PHP生成的图像引起的延迟仍未受到影响.这些微小的3~5Kb缩略图在想什么呢?所有标题信息都可以发送火箭到月球和后面.关于这个瓶颈的任何建议都非常受欢迎并被视为可能的答案,因为我已经困在这个瓶颈问题已经七个月了.我提前谢谢了.
[我网站上的一些背景信息:CSS位于顶部.底部的JS(Jquery,JQuery UI,购买菜单awm/menu.js引擎,选项卡js引擎,视频swfobject.js)第二个图像上的黑线显示什么是启动加载的内容.愤怒的机器人是我的宠物"ZAM".他是无害的,往往更快乐.]
加载瀑布:按时间顺序排列 | http://webpagetest.org

并行域分组 | http://webpagetest.org

Site-Perf瀑布 | http://site-perf.com

Pingdom工具瀑布 | http://tools.pingdom.com

GTmetrix瀑布 | http://gtmetrix.com

Expires和Cache-Control标题有什么区别?
我正在尝试使用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. …
当我访问chesseng.herokuapp.com时,我得到一个看起来像的响应头
Cache-Control:private
Connection:keep-alive
Content-Encoding:gzip
Content-Type:text/css
Date:Tue, 16 Oct 2012 06:37:53 GMT
Last-Modified:Tue, 16 Oct 2012 03:13:38 GMT
Status:200 OK
transfer-encoding:chunked
Vary:Accept-Encoding
X-Rack-Cache:miss
Run Code Online (Sandbox Code Playgroud)
然后我刷新页面然后得到
Cache-Control:private
Connection:keep-alive
Date:Tue, 16 Oct 2012 06:20:49 GMT
Status:304 Not Modified
X-Rack-Cache:miss
Run Code Online (Sandbox Code Playgroud)
所以看起来缓存工作正常.如果它适用于缓存,则Expires和Cache-Control的重点是:max-age.更令人困惑的是,当我在https://developers.google.com/speed/pagespeed/insights/上测试该页面时,它告诉我"利用浏览器缓存".
你能否描述一个例子,说明在IIS中托管的asp.net应用程序中的公共和私有缓存控制之间的区别.
我在MSDN中读到的不同之处如下:
Public: Sets Cache-Control:public指定响应可由客户端和共享(代理)缓存缓存.
私有:默认值.设置Cache-Control:private以指定响应仅在客户端上可缓存,而不是由共享(代理服务器)缓存缓存.
我不确定我是否完全理解每种选择的利弊.何时使用或不使用它的例子会很棒.
例如,如果我有两个托管相同应用程序的Web服务器,我该怎么办?如果我选择私人或公共,有什么值得注意的吗?
我有一个在云服务器上运行的php站点.当我添加新文件css,js或images时,浏览器正在加载存储在缓存中的相同的旧js,css和图像文件.
我的网站有一个doctype和meta标签,如下所示
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta http-equiv="Page-Enter" content="blendTrans(Duration=1.0)">
<meta http-equiv="Page-Exit" content="blendTrans(Duration=1.0)">
<meta http-equiv="Site-Enter" content="blendTrans(Duration=1.0)">
<meta http-equiv="Site-Exit" content="blendTrans(Duration=1.0)">
Run Code Online (Sandbox Code Playgroud)
由于上面的doctype和元代码,我加载缓存在浏览器中的相同文件而不是新文件
我们目前正在开发一个新项目,定期更新,我们的客户每天都会使用这些更新.该项目正在使用角度2开发,我们面临缓存问题,即我们的客户没有看到他们的机器上的最新变化.
主要是js文件的html/css文件似乎得到了正确的更新而没有给出太多麻烦.
caching cache-control browser-cache angular2-template angular
我有几个与Cache-Control相关的查询.
如果我max-age=3600, must-revalidate为静态html/js/images/css文件指定Cache-Control ,并在HTTP标头中定义了Last Modified Header:
我正在使用Amazon S3为我的网站提供静态资产.我想让浏览器尽可能长时间地缓存这些资产.我应该在资产中包含哪些元数据标头
Cache-Control: max-age=???
Run Code Online (Sandbox Code Playgroud) cache-control ×10
caching ×6
http-headers ×6
http ×5
php ×2
.htaccess ×1
angular ×1
http-caching ×1
iis ×1
performance ×1
symfony ×1