3

我知道作为用户自己,我可以按“F5”来确保或清除我的缓存等。

我只是想知道从网页设计师的角度来看,是否有任何东西可以使这更加“自动化”,因为许多用户可能不知道这样做。

对于动态站点,这可以通过服务器端的“魔法”来完成。

似乎对类似问题的一些答案意味着以某种方式编辑 .htaccess,所以我将对此进行调查。但是,如果有人有适用于静态站点的“快速提示”或代码片段,那就太好了。

该网站上唯一使用的 PHP 是用于联系表格,因此它可以自动发送电子邮件。该网站的其余部分只是图像、文本等。

4

5 回答 5

8

您无法使用某种 JS 解决方案清除缓存,但您可以做的是,每次对您的网站进行新部署/更新时,在您的 css/js 末尾添加一个虚假版本/等编号。

例如:

main.css?v=1.5
myCode.js?v=123

下次更新时,只需稍微更改一下即可:main.css?v=1.51当用户再次访问您的站点时,由于 URL 将不同,它会自动重新加载它,确保他们使用最新的样式表。

于 2013-01-02T16:49:46.400 回答
3

尝试将缓存清除变量添加到包含文件的末尾。例如,不是包括,而是main.js包括main.js?d=20120102。JS/CSS 文件会忽略该变量,但该变量会导致客户端认为它是一个尚未缓存的新文件。然后,您可以在更新文件时轻松更改变量。

于 2013-01-02T16:50:43.877 回答
1

尝试:

<img src="image/path.jpg?t=<?=time();?>" />

对于您的“静态”网站中的每个图像。当您使用 *.html 文件时,您可以使用 javascript 在 onload 事件中“重新加载”每个图像。

于 2013-01-02T16:50:38.640 回答
0

实现这一目标的方法很少。

您可以在静态 html 页面中设置缓存元信息,以指示浏览器不缓存并将请求重定向到原始服务器

<META HTTP-EQUIV="CACHE-CONTROL" CONTENT="NO-CACHE">
<meta http-equiv="cache-control" content="max-age=0" />
<META HTTP-EQUIV="PRAGMA" CONTENT="NO-CACHE">

使用php,您可以像这样设置标题

<?php
  //set headers to NOT cache a page
  header("Cache-Control: no-cache, must-revalidate"); //HTTP 1.1
  header("Pragma: no-cache"); //HTTP 1.0
  header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // Date in the past

您还可以使用.htaccess. 为此,您需要mod_headers启用。只需将此代码段放入您的.htaccess文件中。

<filesMatch ".(html|htm|js|css)$">
FileETag None
<ifModule mod_headers.c>
Header unset ETag
Header set Cache-Control "max-age=0, no-cache, no-store, must-revalidate"
Header set Pragma "no-cache"
Header set Expires "Wed, 11 Feb 1994 08:00:00 GMT"
</ifModule>
</filesMatch>
于 2013-01-02T16:59:38.747 回答
0

通过使用 html5 样板 ( http://html5boilerplate.com/ ),并确保我转移了他们的“预制”.htaccess,我的网站可以正常显示更新。

老实说,我什至没有真正查看该文件,但我确信它包含了此处描述的一些概念。

于 2013-03-18T02:47:49.767 回答