0

所以今晚我一直在为客户进行基本的网站设计(供参考:http ://thomaswinchester.com/schaeferhvac/index.php ),我得到了一些奇怪的结果。关注的区域是页面中间的三列内容部分。

当我最初将文件上传到我的服务器时,这些列似乎无法正常工作。见下图:

页面初始视图和正常刷新 (f5)

所以我认为这只是文档正在加载一个旧的 .css 文件或其他东西,所以我决定按 ctrl+f5 以获得未缓存的外观。一切似乎都运行良好。见下图:

第二次查看和未缓存刷新 (ctrl+f5)

这正是我想要的样子。因此,我对设计进行了一些后端更改,然后点击刷新(f5),布局再次中断。然后我按 ctrl+f5 并修复它。我已经断断续续地继续这种模式大约 15 分钟。

我的问题是:为什么会发生这种情况?哪个页面是“实际”页面。例如,我从以前从未访问过该域的笔记本电脑访问了该页面,它加载了损坏的页面。果然,按 ctrl+f5 就解决了!然后,按 f5 打破了它。

在这一点上,我应该提一下,我已经在最新版本的 Chrome、FF、IE、Opera 和 Safari for Windows(尽管 Safari for Windows 似乎没有 ctrl+f5)中测试了这种行为,结果相似。

我做了一些谷歌搜索,发现了一些线索:主要是解释 f5 和 ctrl+f5 之间的区别。我最担心的是,如果它正在加载缓存文件(即使在最新的 css 文件上传后 20 分钟),我该如何阻止这种情况在未来发生?

另外,除非您特别需要,否则我不会发布用于布局的代码,因为我不确定这是问题所在。该页面验证为 XHTML Strict,但这并不意味着我做的一切都是正确的,哈哈。如有必要,您可以通过单击第一段中的 URL 来查看源代码。

提前感谢您的帮助!!!

4

1 回答 1

1

是的,这个问题一定是关于 CSS 缓存的。

有几种方法可以强制浏览器加载外部文件,它们都是为了让浏览器认为文件已更新:

  1. 将 GET 参数添加到 css 文件,例如time(),或类似的东西。

    <link rel="stylesheet" type="text/css" href="style.css?<?php echo time(); ?>" />

  2. 添加 .htaccess 指令以获得某些文件的附加标头(例如 css 文件):

    <filesMatch "\.(css)$"> FileETag None <ifModule mod_headers.c> Header unset ETag Header set Cache-Control "max-age=0, no-cache, no-store, must-revalidate" Header set Pragma "no-cache" Header set Expires "Wed, 11 Jan 1984 05:00:00 GMT" </ifModule> </filesMatch>

于 2012-11-03T09:11:16.733 回答