浏览器不会阅读更新的CSS

|| 编辑:我真诚的歉意!除了我自己,这不是什么问题-我有一个global.css文件,其中包含正确的内容,但在此之下,我在HTML的“ 0”位中包含了一个包含旧CSS的文件。 Facepalm。 我有一个正在开发的网站。我正在使用LESS增强我的CSS,以使其更易于编写。问题是,当我更改“ 1”文件时,浏览器中呈现的样式拒绝更改。我查看了生成的
.css
文件,该文件进行了更新以反映所做的更改,但是浏览器不会从CSS文件中更新其渲染样式。我已经在Chrome,FF(3和4)和Opera中尝试了此操作,但结果相同。 我什至告诉浏览器不缓存任何PHP和元标记,都没有用。我的Apache配置文件几乎是原始文件,尽管我使用的是多个localhost(这是本地服务器)。下面给出了用于将LESS转换为CSS的代码,该代码在每次重新加载页面时运行:
try 
{
    lessc::ccompile(\'global/global.less\', \'global/global.css\');
} 
catch(exception $ex) 
{
    exit(\'lessc fatal error:<br />\' . $ex->getMessage());
}
这里没有例外。
less.php
解析器检查文件是否已被修改(我删除了一点),但是每次更改都会重新生成CSS文件,因此这一定是浏览器存在缓存问题... Apache提供了更新的CSS文件就好了:-/ 很抱歉,持续了这么长时间,但我想清楚一点。如果您还有其他需要,请告诉我。     
已邀请:
一旦我在代码中看到使用时间戳来强制浏览器在每次请求时都下载
css
js
文件,就这样:
<link rel=\"stylesheet\" type=\"text/css\" href=\"http://www.example.com/style.css?ts=<?=time()?>\" />
the8ѭ强制浏览器在数字与前一个不同时重新加载文件。 所以我采用了这个想法,但是我使用的是文件
style.css
的修改时间戳,而不是ѭ9的时间戳。因此它会缓存在浏览器中,直到在服务器上进行修改:
<link rel=\"stylesheet\" type=\"text/css\" href=\"http://www.example.com/style.css?ts=<?=filemtime(\'style.css\')?>\" />
    
我正在使用LESS和Laravel,终于找到了一个好的解决方案: 在我的
<head>
标签中,我有:
<link rel=\"stylesheet/less\" type=\"text/css\" href=\"/less/main.less?ts={{FileHelper::getMostRecentModifiedTimeInFolder(realpath(public_path() . \'/less\'))}}\" />
然后,我还创建了一个FileHelper类(基于https://stackoverflow.com/a/6767411/470749):
<?php

class FileHelper {

    public static function getMostRecentModifiedTimeInFolder($path)
    {
        //https://stackoverflow.com/a/6767411/470749
        $iterator = new DirectoryIterator($path);
        $mtime = -1;
        foreach ($iterator as $fileinfo) {
            if ($fileinfo->isFile()) {
                if ($fileinfo->getMTime() > $mtime) {
                    $mtime = $fileinfo->getMTime();
                }
            }
        }
        return $mtime;
    }

}
我可能会决定仅在本地开发服务器上使用此方法,而将其他方法用于生产,以便它不必总是在每次页面加载时都检查文件时间戳。     
由于您无法控制浏览器缓存,因此建议您为CSS文件提供版本。像global.1.11.css。     

要回复问题请先登录注册