当我用Privoxy检查我的浏览器从一个站点下载的内容时,它似乎是组成页面的所有元素(CSS、JS、图标等)。每次都会重新下载,即。浏览器不缓存它们(抱歉,新的使用不允许包含URL):
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<TITLE>My Site</TITLE>
<meta name="keywords" lang="fr" content="whatever">
<meta name="Description" lang="fr" content="whatever">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<meta name="Category" content="Internet">
<meta name="revisit-after" content="2 days">
<meta name="author" content="webmaster@example.com">
<meta name="identifier-URL" content="http://www.example.com">
<meta name="robots" content="index, follow">
<meta name="classification" content="Internet">
<meta name="distribution" content="global">
<meta name="geography" content="Paris">
<meta name='language' content='fr'><meta http-equiv='content-language' content='fr'><meta name='rating' content='General'>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link rel="alternate" type="application/rss+xml" title="My RSS" href="http://www.example.com/rss.php" />
<link rel="shortcut icon" href="favicon.ico">
<link rel="icon" href="animated_favicon1.gif" type="image/gif">
<link rel="stylesheet" href="miseenforme.css" type="text/css">
<link rel="stylesheet" href="css/screen2009.css" type="text/css">
<!--[if lte IE 6]>
<link rel="stylesheet" href="css/screen2009-ie6.css" type="text/css">
<![endif]-->
<style type="text/css">@import url(jscalendar-1.0/calendar-blue.css);</style>
<script type="text/javascript" src="jscalendar-1.0/calendar.js"></script>
<script type="text/javascript" src="jscalendar-1.0/lang/calendar-fr.js"></script>
<script type="text/javascript" src="jscalendar-1.0/calendar-setup.js"></script>
<script type="text/javascript" src="jquery-1.2.6.pack.js"></script>
<script type="text/javascript" src="jquery.scrollTo-min.js"></script>
<script type="text/javascript" src="jquery.autogrow.js"></script>
<script type="text/javascript" src="fonctionsjs.js?maj=v1"></script>
</head>事实上,我在这个HTML头文件中没有看到任何与缓存相关的指令。
有人能确认浏览器(IE,Firefox,Chrome)不会缓存任何东西,除非在HTML头中被告知吗?
我们需要配置浏览器来强制它们缓存元素吗?
谢谢。
发布于 2009-05-28 15:57:29
简而言之:不改变浏览器,发送正确的缓存相关的HTTP头*信息。
长文版:如果你没有明确告诉浏览器缓存的内容和方式,那就让它自己选择。这样的设置是可配置的,并且在不同的用户和不同的浏览器之间会有很大的不同,但通常你可以预期浏览器会积极地缓存图像、js和css,而不是html (这是非常粗略的,只是我的经验)。然而,依赖浏览器来解决这个问题是不合理的,如果你关心的话,你需要明确地告诉他们,而且你还需要用响应头而不是元标记来做到这一点,因为元标记根本不受尊重。
长文本的简短版本:缓存很复杂。我建议你在谷歌上搜索你所选择的语言平台的教程。
*不是html head标签的内容,而是HTTP header的内容
发布于 2009-05-28 15:57:31
您确定它们没有被缓存吗?如果您的服务器不输出静态元素的缓存控制标头,则浏览器仍将为每个元素向服务器发出HTTP请求(带有缓存文件的时间戳)。然后服务器应响应304状态,而不是modified。所以文件本身不会再次传输,但这个请求-响应可能就是您在Privoxy中看到的。
要保存请求,您必须配置服务器以设置缓存控制标头。但是,请注意,服务器上的更改可能不会反映在客户端上,因此每当更改css/static文件时,您都需要对它们进行重命名,以确保所有客户端都使用最新版本。
发布于 2009-05-28 15:55:39
缓存(缺少服务器配置或其他显式指令)通常是许多项目的浏览器设置。如果你没有设置足够大的缓存,或者你禁用了缓存,或者你的浏览器不确定是同一个文件,或者其他一些可能性,它将重新下载这些项目。
您可以设置一些服务器控件。如果你让我们知道你运行的是什么服务器,你可能会得到一个更好的答案...
最后,您可以查看http://www.w3.org/Protocols/rfc2616/rfc2616-sec13.html和http://www.web-caching.com/mnot_tutorial/how.html以获取更多信息。
基于your reply (我猜这就是你的新名字…)你想看看你的Apache设置。我从来没有使用过Apache,所以我不知道从哪里开始...
你还会想看看我和其他人链接到的一些文章。这并不是一个简单的话题。One article已经被链接到了几次。(提示提示)
作为一名PHP程序员,我对此不是百分之百肯定,但我敢打赌PHP有一种方法可以覆盖服务器的缓存头设置。可能值得在这里或php.net上研究一下。
https://stackoverflow.com/questions/921630
复制相似问题