06
of january 2015
有人知道解决方案吗?
1> Andrea Ligio..:
通常原因是以下之一:
1)您的规则未被应用
这可能是因为:
您的HTML格式不正确(但通常浏览器处理它);
你的CSS有语法错误;
在你的(声明计数顺序,后者获胜)之后加载一些其他CSS文件(具有相同/相似的规则);
其他一些具有更高特异性的 CSS规则会在页面的任何位置加载,并且胜过您想要应用的规则(有关此答案的更多信息) ;
一些其他CSS规则使用!important
关键字.
您可以使用浏览器的开发人员工具进行检查, 检查CSS面板,按重要性降序列出规则的位置(从更多到不太重要).
2)您的CSS文件被缓存
这可能是因为您的服务器或浏览器正在缓存CSS资源.要强制刷新资源,您需要按一次CTRLF5而不是F5单独按下(在重新部署静态资源之后).
关于这个主题有一个众所周知的SO Q&A,并且明确指出:
CTRLF5(不是吗?)在不同浏览器中的工作方式不同 ;
请注意,虽然Ctrl + F5将导致浏览器抛出缓存并从服务器请求新缓存,但服务器可能会忽略no-cache标头并提供服务器端缓存页面.因此,如果服务器忽略no-cache标头,甚至Ctrl + F5也可能返回旧版本的页面.(从评论到接受的答案).
如果服务器忽略浏览器的请求清除缓存(有时会发生),我发现解决这个问题的最快方法是:在地址输入栏的静态资源和新闻界的URL CTRLF5上那页(也就是CSS文件),而不是在导入它的页面中.这种情况100%有效.
要快速执行此操作,请使用Open link in a new Tab浏览器的DevTools,或者通过打开的HTML单击CSS链接View Source.
完美答案.ctrl + F5修复了这个问题.强制重新加载资源.再次感谢.
2> brezanac..:
您基本上面临一个缓存问题,即您的浏览器不想从服务器实际请求新版本,而是使用内部浏览器缓存中缓存的版本.
简单地使用开发人员工具来禁用缓存在开发过程中会起作用,但如果您的工作流程基于经常在线放置内容,那么您最终将面临一种情况:您无法控制访问者看到的CSS代码版本(并且您不能依靠他们使用他们的开发人员工具来禁用缓存).
为了防止这样的事情发生,您应该使用一种称为"缓存清除"的技术,这实际上意味着您将向资源URL添加内容,这些内容将在每次资源文件更改时更改.基本上你的CSS URL从这里转换
这样的事情
在SO上有很多关于缓存清除的报道,因此在决定如何处理问题之前,您可能需要查看所有可用选项.
我个人最喜欢的技术是将服务器端代码与mod_rewrite结合起来以实现缓存清除.工作流程如下.
1)服务器端代码使用DOMDocument查找生成的HTML代码中的所有资源文件,如CSS,Javascript等,并附加使用filemtime检索的修改时间戳.
示例:/css/main.min.css
变为/css/main.min-1422585377.css
将被提供给客户端(浏览器)的代码.
2)当浏览器收到响应时,如果附加的时间戳与缓存中的时间戳不匹配,则只需将该CSS请求视为新资源(具有不同名称的资源始终被视为新请求).
3)浏览器现在向/css/main.min-1422585377.css
服务器发送请求.
4)为了将所有请求重定向到main.min.css
服务器上实际存在的请求,我们使用这样的简单重写规则
RewriteRule (.+)-(\d{10,}).(css|js|jpg|jpeg|png|gif)$ $1.$3 [L]
注意:我实际上更喜欢在文件名本身中包含时间戳,因此/css/main.min.css?1422585377
我更喜欢使用,/css/main-1422585377.min.css
因为像Squid这样的代理服务器倾向于忽略查询字符串,并且只将文件名部分视为相关.