更新整个网站的最佳做法是什么?

更新整个网站的最佳做法是什么?

我有一个网站,它是对现有网站的完全重做,准备上线。我找不到足够的信息来成功过渡到新网站。

我有一个可从指向 的子域访问的新网站public_dev。理论上,我可以重命名public_html,然后重命名public_devpublic_html。问题是当前网站的内容将被缓存。

基本上,我正在寻找一种方法,如果浏览器自特定日期以来没有访问过该网站,则要求浏览器不要使用它的缓存。

我应该在 PHP 中使用.htaccess或还是两者兼而有之?header()

答案1

为什么不采取双管齐下的办法,同时使用这两种方法呢?您还可以在内容头部部分设置元标记(使用包含文件进行站点范围的更新)

<META HTTP-EQUIV="Cache-Control" CONTENT="max-age=0">
<META HTTP-EQUIV="Expires" CONTENT="Tue, 01 Jan 1980 1:00:00 GMT">
<META HTTP-EQUIV="Pragma" CONTENT="no-cache">

答案2

如果您直接通过 PHP 文件为网站提供服务,那么您可能不会遇到任何缓存问题(除非您实施了某种形式的缓存管理)。但是,样式表、图像和其他文件等内容仍可能被浏览器缓存。

最好的办法可能是通过 .htaccess 控制缓存,并将所有内容设置为在您打算推出网站的前一天过期:.htaccess - 如何设置过去的到期日期?

答案3

唯一能确保同时使所有缓存失效的方法是更改​​浏览器实际看到的 URL。因此,你的http://example.com/index.php变成类似http://example.com/2/index.php. 所有静态文件也需要有新的 URL 路径。

这就是为什么 Google 和其他公司在其代码中为所有基于 MD5 哈希的静态资产构建“资产重命名”流程的原因。这样,您可以将缓存控制设置为 10 年,确保对 /03b/c49/ef94589d54390435ab0943cd212.png 的任何请求都将始终返回准确的预期内容,并且当该 URL 被“较新”的资产替换时,永远不会请求该 URL。但这需要大量工作来设置,因此使用如上所述的新根路径的相对 URL 更为常见。

相关内容