网站更新缓存

发布于 2024-12-19 13:59:14 字数 90 浏览 0 评论 0原文

如果您有一个正在运行的网站(使用 PHP、MySQL、JS、CSS)并说您更改了某些功能。确保当用户访问该网站时,更改的页面会被更新而不是从缓存加载的最佳方法是什么?

If you have a live website (using PHP,MySQL,JS,CSS) and say you change some functionality. What is the best way to make sure, that when a user visits the site, the changed pages are updated and not loaded from cache?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

清风无影 2024-12-26 13:59:14

为此,就有了文件加载器。当加载css、js或任何其他文件时,必须设置缓存控制标头。您可以通过编辑 .htaccess 或使用 php 来完成此操作。

.htaccess 演示

<IfModule mod_expires.c>
ExpiresActive On
ExpiresDefault A300
ExpiresByType image/x-icon A2592000
ExpiresByType application/x-javascript A3600
ExpiresByType text/css A3600
ExpiresByType image/gif A604800
ExpiresByType image/png A604800
ExpiresByType image/jpeg A604800
ExpiresByType text/plain A300
ExpiresByType application/x-shockwave-flash A604800
ExpiresByType video/x-flv A604800
ExpiresByType application/pdf A604800
ExpiresByType text/html A300
</IfModule>

PHP 演示:

 $offset = 3600 * 24;
 $expire = "Expires: " . gmdate("D, d M Y H:i:s", time() + $offset) . " GMT";
 header($expire);

For that reson there is file loaders made for. When you load css, js or any other file, you must set cache control header. You can do it by editing .htaccess or with php.

.htaccess demo

<IfModule mod_expires.c>
ExpiresActive On
ExpiresDefault A300
ExpiresByType image/x-icon A2592000
ExpiresByType application/x-javascript A3600
ExpiresByType text/css A3600
ExpiresByType image/gif A604800
ExpiresByType image/png A604800
ExpiresByType image/jpeg A604800
ExpiresByType text/plain A300
ExpiresByType application/x-shockwave-flash A604800
ExpiresByType video/x-flv A604800
ExpiresByType application/pdf A604800
ExpiresByType text/html A300
</IfModule>

PHP demo:

 $offset = 3600 * 24;
 $expire = "Expires: " . gmdate("D, d M Y H:i:s", time() + $offset) . " GMT";
 header($expire);
清旖 2024-12-26 13:59:14

通过 HTML,在 Head 部分放置...

<META HTTP-EQUIV="CACHE-CONTROL" CONTENT="NO-CACHE">
<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
<META HTTP-EQUIV="Expires" CONTENT="-1">

Via HTML, in the Head section put...

<META HTTP-EQUIV="CACHE-CONTROL" CONTENT="NO-CACHE">
<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
<META HTTP-EQUIV="Expires" CONTENT="-1">
星光不落少年眉 2024-12-26 13:59:14

如果每个浏览器符合标准,您无法真正控制每个浏览器的策略,但通常会发生的情况是浏览器会从每个 HTML 下载标头,然后再决定是否应从缓存加载或重新下载。

检查 RFC HTTP 1.1 标头字段 了解更多详细信息(特别是在缓存控制下) )

You can't really control the policy each browser, if it complies to the standards, but what commonly happens is the browser does download the header from each HTML before deciding whether or not it should be loaded from cache or re-downloaded.

Check RFC HTTP 1.1 Header Field for more details (under cache control in particular)

单挑你×的.吻 2024-12-26 13:59:14

除非您有某种形式的缓存,否则用户将请求数据并检查数据是否已更新。通常,除非您有主动缓存,否则您的 PHP 不会被缓存。

您的 JS 和 CSS 必须通过 Apache(或您使用的任何 Web 服务器)下的标头进行设置。

Unless you have some form of caching the user will be requesting data and checking if it has been updated. Usually your PHP is not cached unless you have active caching.

Your JS and CSS would have to be set via HEADERS under say Apache (or whatever web server you utilize).

音栖息无 2024-12-26 13:59:14

您可以使用 window.applicationCache.swapCache();和 window.location.reload();一旦 javascript 确认网站有更新版本,就强制重新加载页面。

更好的选择可能是以某种方式提示用户,让他们知道网站已更新。这样,页面就不会突然重新加载。

function updateCache(){
    window.applicationCache.swapCache();
    window.location.reload();
}

window.applicationCache.addEventListener("updateready", updateCache, false);

You can use the window.applicationCache.swapCache(); and window.location.reload(); to force reload the page once javascript confirms that there's an updated version of the site.

A better option may be to prompt the user in some way, letting them know that the site updated. That way, the page doesn't just suddenly reload.

function updateCache(){
    window.applicationCache.swapCache();
    window.location.reload();
}

window.applicationCache.addEventListener("updateready", updateCache, false);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文