首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >元素是否被缓存?

元素是否被缓存?
EN

Stack Overflow用户
提问于 2009-05-28 15:50:47
回答 5查看 318关注 0票数 0

当我用Privoxy检查我的浏览器从一个站点下载的内容时,它似乎是组成页面的所有元素(CSS、JS、图标等)。每次都会重新下载,即。浏览器不缓存它们(抱歉,新的使用不允许包含URL):

代码语言:javascript
复制
<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头中被告知吗?

我们需要配置浏览器来强制它们缓存元素吗?

谢谢。

EN

回答 5

Stack Overflow用户

发布于 2009-05-28 15:57:29

简而言之:不改变浏览器,发送正确的缓存相关的HTTP头*信息。

长文版:如果你没有明确告诉浏览器缓存的内容和方式,那就让它自己选择。这样的设置是可配置的,并且在不同的用户和不同的浏览器之间会有很大的不同,但通常你可以预期浏览器会积极地缓存图像、js和css,而不是html (这是非常粗略的,只是我的经验)。然而,依赖浏览器来解决这个问题是不合理的,如果你关心的话,你需要明确地告诉他们,而且你还需要用响应头而不是元标记来做到这一点,因为元标记根本不受尊重。

长文本的简短版本:缓存很复杂。我建议你在谷歌上搜索你所选择的语言平台的教程。

*不是html head标签的内容,而是HTTP header的内容

票数 1
EN

Stack Overflow用户

发布于 2009-05-28 15:57:31

您确定它们没有被缓存吗?如果您的服务器不输出静态元素的缓存控制标头,则浏览器仍将为每个元素向服务器发出HTTP请求(带有缓存文件的时间戳)。然后服务器应响应304状态,而不是modified。所以文件本身不会再次传输,但这个请求-响应可能就是您在Privoxy中看到的。

要保存请求,您必须配置服务器以设置缓存控制标头。但是,请注意,服务器上的更改可能不会反映在客户端上,因此每当更改css/static文件时,您都需要对它们进行重命名,以确保所有客户端都使用最新版本。

票数 1
EN

Stack Overflow用户

发布于 2009-05-28 15:55:39

缓存(缺少服务器配置或其他显式指令)通常是许多项目的浏览器设置。如果你没有设置足够大的缓存,或者你禁用了缓存,或者你的浏览器不确定是同一个文件,或者其他一些可能性,它将重新下载这些项目。

您可以设置一些服务器控件。如果你让我们知道你运行的是什么服务器,你可能会得到一个更好的答案...

最后,您可以查看http://www.w3.org/Protocols/rfc2616/rfc2616-sec13.htmlhttp://www.web-caching.com/mnot_tutorial/how.html以获取更多信息。

基于your reply (我猜这就是你的新名字…)你想看看你的Apache设置。我从来没有使用过Apache,所以我不知道从哪里开始...

你还会想看看我和其他人链接到的一些文章。这并不是一个简单的话题。One article已经被链接到了几次。(提示提示)

作为一名PHP程序员,我对此不是百分之百肯定,但我敢打赌PHP有一种方法可以覆盖服务器的缓存头设置。可能值得在这里或php.net上研究一下。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/921630

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档