我的系统是Windows 7 x64,Chrome 20.0.1132.57 m.
在我的HTTP响应标题中,我有:
Cache-Control: public, max-age=1000
Expires: *some date*
Run Code Online (Sandbox Code Playgroud)
在IE和FF中,页面缓存在本地,当我尝试通过键入URL并按Enter键再次访问时,不会发送任何请求并且页面显示正确.但在Chrome中,它始终使用以下标头向服务器发送请求:
Cache-Control: max-age=0
Run Code Online (Sandbox Code Playgroud)
我不希望客户端向我的服务器发送请求然后回复304.我想保存往返时间.
我正在尝试下载(并希望缓存)PHP中动态加载的图像.以下是发送和接收的标头:
请求:
GET /url:resource/Pomegranate/resources/images/logo.png HTTP/1.1
Host: pome.local
Connection: keep-alive
Cache-Control: max-age=0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Ubuntu Chromium/25.0.1364.160 Chrome/25.0.1364.160 Safari/537.22
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3
Cookie: PHPSESSID=fb8ghv9ti6v5s3ekkmvtacr9u5
Run Code Online (Sandbox Code Playgroud)
响应:
HTTP/1.1 200 OK
Date: Tue, 09 Apr 2013 11:00:36 GMT
Server: Apache/2.2.22 (Ubuntu)
X-Powered-By: PHP/5.3.14 ZendServer/5.0
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Content-Disposition: inline; filename="logo"
ETag: "1355829295"
Last-Modified: Tue, 18 Dec 2012 14:44:55 Asia/Tehran
Keep-Alive: timeout=5, …Run Code Online (Sandbox Code Playgroud) 我们最近在我们的网站上修复了一个唠叨错误,类似于如何停止从沃达丰代理注入javascript中描述的错误? - 基本上,沃达丰移动网络正在破坏我们的传输页面,对JavaScript进行了编辑,打破了视图模型.
将"Cache-Control:no-transform"标题添加到遇到问题的页面修复它,这很好.
但是,我们担心,随着我们使用JavaScript MVP技术进行更多客户端开发,我们可能会再次看到它.
有没有理由不将此标题添加到我们网站提供的每个页面?
这会阻止任何有用的转换吗?或者它基本上只是运营商制造火腿试图缩小事物并在此过程中破坏它们的类似例子?
我已经读过Firefox已经开始支持缓存控制扩展值immutable,这意味着"响应主体不会随着时间的推移而改变".因此,即使用户请求页面或资源的"完全刷新",浏览器仍然只响应本地缓存的副本,从而避免不必要的304或页面刷新,并且由于使用缓存内容而使页面加载更快,并且减少负载在服务器上,因为大量请求在它们发生之前就被停止了.
我正在试图看看它的支持程度如何,并且我找到了不同的答案,因为这个mozilla页面表明它只在Firefox中支持,但这个已解决的Chrome问题表明它已经从Chrome v54开始提供.
哪些浏览器支持Cache-Control: immutable,什么时候开始支持它?
这是一个关于它的ietf草案,原来的mozilla帖子宣布了这个测试版功能被Facebook和这个相关的mozilla帖子使用,以及一个文档讨论了来自某些谷歌Chrome开发者的不同类型的重新加载请求.
ETag 标头的定义 ( https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/ETag ):
ETag HTTP 响应标头是资源特定版本的标识符。它使缓存更加高效,并节省带宽,因为如果内容未更改,Web 服务器不需要发送完整响应。另一方面,如果内容发生更改,etag 有助于防止资源的同时更新相互覆盖(“空中冲突”)。
Cache-Control 标头的定义 ( https://developer.mozilla.org/de/docs/Web/HTTP/Headers/Cache-Control ):
Cache-Control 通用标头字段用于指定请求和响应中的缓存机制的指令。
因此,ETag 标头告诉资源浏览器向服务器发送单个 HTTP 请求,并询问文件哈希是否已更改。如果是,请下载一个新的。伟大的。那么,如果设置了 ETag 标头,为什么我还需要 Cache-Control(除了 Expires 标头,这可能有助于避免这个单一请求)?
因此,如果我必须设置 Cache-Control 标头,它只会有害,对吧?我认为最合适的值是:
Cache-Control: must-revalidate
Run Code Online (Sandbox Code Playgroud)
但我不确定这是否会引发不必要的额外操作。
我正在寻找一个试图使用If-Modified-Since请求对象的标头的缓存库.问题是这个标题永远不会被设置,它总是空白的,这对我来说是有意义的,看它是如何请求的.
你怎么能强制要求有一个If-Modified-Since标题?或者我是否会这样做.
这是我指的功能.
public function isNotModified(Request $request)
{
$lastModified = $request->headers->get('If-Modified-Since');
$notModified = false;
if ($etags = $request->getEtags()) {
$notModified = (in_array($this->getEtag(), $etags) || in_array('*', $etags)) && (!$lastModified || $this->headers->get('Last-Modified') == $lastModified);
} elseif ($lastModified) {
$notModified = $lastModified == $this->headers->get('Last-Modified');
}
if ($notModified) {
$this->setNotModified();
}
return $notModified;
}
Run Code Online (Sandbox Code Playgroud) 我正在开发一个基于Web的应用程序,也应该在基于Android的手机上运行.由于我没有,我成功使用SDK中的模拟器.
但是当我不断更改应用程序的一些JavaScript页面时,浏览器使用旧版本的缓存(服务器上的缓存控制是正确的 - 但我没有那里需要过多缓存的正常用例)
那么有没有办法告诉(默认)Android浏览器永久禁用它的缓存?
或者是否可以使用adb命令清除缓存?
你能告诉我Expires和Cache-control的区别:max-age?
我在本地开发服务器上有static.serve设置,但它似乎缓存静态文件(在我的情况下,css,javascript和图像),直到我重新启动服务器.我没有使用apache,我将缓存设置为:
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.dummy.DummyCache',
}
}
Run Code Online (Sandbox Code Playgroud)
一起删除缓存声明似乎也没有帮助.
在我从旧的1.1版本升级到1.2.5之前没有发生这种情况.
每次进行样式更新时,每次都要重新启动dev服务器(通过触摸python文件或通过命令行)是一件痛苦的事.
编辑 - 按照建议,我添加了settings.py和url.py
Settings.py
# Django settings for zeiss_elearning project.
from django.utils.translation import ugettext_lazy as _
gettext = lambda s: s
DEBUG = True
TEMPLATE_DEBUG = DEBUG
ADMINS = (
('Jason Roy', '###'),
)
#Email settings
EMAIL_HOST = '###'
EMAIL_HOST_USER = 'info@btbcreative.com'
EMAIL_HOST_PASSWORD = '####'
DEFAULT_FROM_EMAIL = 'info@btbcreative.com'
MANAGERS = ADMINS
DATABASES = {
'default': {
'ENGINE' : 'django.db.backends.mysql',
'NAME' : '###',
'USER' : '###',
'PASSWORD' : …Run Code Online (Sandbox Code Playgroud) @ tools.pingdom.com由于这些资源,我在杠杆缓存控制中收到警告:
http://code.jquery.com/jquery-1.6.2.min.js
http://www.google-analytics.com/ga.js
http://edge.sharethis.com/images/spinner.gif
http://w.sharethis.com/button/buttons.js
Run Code Online (Sandbox Code Playgroud)
哪些不在我的主人.
我该怎么办?
这是我的htaccess的开始:
# 480 weeks
<FilesMatch "\.(ico|pdf|flv|jpg|jpeg|png|gif|css|swf)$">
Header set Cache-Control "max-age=290304000, public"
</FilesMatch>
# 1 weeks
<FilesMatch "\.(js)$">
Header set Cache-Control "max-age=604800, public"
</FilesMatch>
Run Code Online (Sandbox Code Playgroud) cache-control ×10
http-headers ×5
http ×2
javascript ×2
android ×1
caching ×1
django ×1
etag ×1
firefox ×1
jquery ×1
outputcache ×1
php ×1