我最近重新设计了我的网站,新的CSS,按钮的新图形等。当现有用户返回我的网站时,我想确保他们获得新的页面和样式表,浏览器不要尝试加载旧的样式表等。
以前我的标题看起来像这样 -
我有一个公共页面的头文件 -
<meta http-equiv="expires" content="Tue, 16 Feb 2019 09:00:00 GMT">
<meta http-equiv="cache-control" content="max-age=315360000">
网站内页面的头文件(用户登录后)
<meta http-equiv="expires" content="Mon, 04 Dec 1999 21:29:02 GMT">
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="expires" content="-1">
<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate">
我认为,由于缓存控件没有指定缓存等,网站内的页面很可能会被提供新的内容。但是我的访问公共页面的访问者是否仍会看到缓存版本?我是否应该将相同的缓存控制标记添加到公共页面的头文件中?
我做的另一件事是将查询字符串添加到新的css文件以强制新加载 -
例如 -
<link rel="stylesheet" href="css/styles.css?new" type="text/css" >
对此有任何其他好的建议/最佳做法吗?
谢谢!
答案 0 :(得分:1)
到期2019年是一个很大的承诺。您说他们无需检查未来8年的更新。
所以是的,您至少应该从公共页面中删除这些标题,如果您想100%确定,请添加其他标题。如果你把它们排除在外,浏览器会猜测它们可以使用缓存版本多长时间,主要基于最后修改过的http-header。
但是,您应该只使用第1行和第4行.Pragma不执行任何操作(仅使用客户端到服务器而不是服务器到客户端)。双过期没有任何用处,-1是无效值。