Css 如何从浏览器缓存中删除加载了@font-face的字体?
几天前,我犯了一个错误:我发布了一个新版本的webapp,使用@font-face和一个有限版本的“droidsans”(没有拉丁字符)。字体文件位于我的服务器上。现在我已经用完整版本更改了字体(我的大多数客户都是西班牙人)。新客户可以毫无问题地获得完整的字体,但是第一次使用有限字体访问的客户不会获得特殊字符 我猜旧字体在浏览器缓存中的某个地方,但我一直无法删除它Css 如何从浏览器缓存中删除加载了@font-face的字体?,css,font-face,Css,Font Face,几天前,我犯了一个错误:我发布了一个新版本的webapp,使用@font-face和一个有限版本的“droidsans”(没有拉丁字符)。字体文件位于我的服务器上。现在我已经用完整版本更改了字体(我的大多数客户都是西班牙人)。新客户可以毫无问题地获得完整的字体,但是第一次使用有限字体访问的客户不会获得特殊字符 我猜旧字体在浏览器缓存中的某个地方,但我一直无法删除它 @font-face { font-family: 'Droid'; src: url(/files/DroidSans.eot);
@font-face {
font-family: 'Droid';
src: url(/files/DroidSans.eot);
src: url(/files/DroidSans.eot?iefix) format('eot'),
url(/files/DroidSans.woff) format('woff'),
url(/files/DroidSans.ttf) format('truetype'),
url(/files/DroidSans.svg#webfontw7zqO19G) format('svg');
font-weight: normal;
font-style: normal;
}
@font-face {
font-family: 'DroidBold';
src: url(/files/DroidSansBold.eot);
src: url(/files/DroidSansBold.eot?iefix) format('eot'),
url(/files/DroidSansBold.woff) format('woff'),
url(/files/DroidSansBold.ttf) format('truetype'),
url(/files/DroidSansBold.svg#webfontSOhoM6aS) format('svg');
font-weight: normal;
font-style: normal;
}
body, a, p, div, span, li, td, th, caption {
font-family: Droid, Optima, Calibri, Helvetica, sans-serif;
font-size: 10pt;
line-height: 14pt;
}
强制重新加载的最简单的方法可能是在字体URL中添加一个无意义的查询字符串(或者按照@Silver light的建议更改字体名称,当然!Duh。我没想到这一点) 当然,这需要重新加载包含此信息的资源。如果是外部样式表,则可能需要应用相同的技巧来强制刷新:
<link rel="stylesheet" href="styles.css?r=1234567890">
更改字体名称应该可以做到这一点,因为名称是浏览器查看字体是否缓存的唯一标准。更改css文件中的字体名称和链接。
因为如果您为静态文件(etag、缓存时间)配置好服务器,大多数浏览器很长时间都不会查询较新版本的文件。我已经更改了文件名和css名称,但仍然使用旧字体。一定还有别的原因。我已经更改了文件名和css名称,但仍然使用旧字体。我不能做太多关于服务器配置的事情,因为该应用程序托管在Heroku上。@Francisco如果您更改了所有URL,但它仍然不能工作,那么浏览器必须在字体名级别而不是文件名级别缓存字体。那将是艰难的。在这种情况下,我能想到的唯一可能有帮助的方法是将用户重定向到一个全新的主机(例如,
domain.com
而不是www.domain.com
)噢,这很棘手,但我会尝试一下。谢谢你的帮助@Pekka@Francisco不客气。不保证它会工作,但我认为它应该工作——如果浏览器会全局缓存字体,那就没有意义了
<link rel="stylesheet" href="styles.css?r=1234567890">