浏览器同步CSS文件缓存?

时间:2015-11-02 07:36:37

标签: php css apache gulp browser-sync

我有以下设置

  • 主机
    • Windows 10
    • BrowserSync 2.9.11在代理模式下(localhost:8888)
  • VirtualBox(作为本地开发服务器)

    • Debian 7
    • Apache 2.2.22和PHP 5.6.14-1
    • 端口80转发给主机:8888
    • 来自主机的共享文件夹,其中包含服务文件
  • Browsersync正在运行并注入了CSS(我看到了通知)

    • 目前通过gulp服务,但也没有gulp,问题是
    • 请参阅gulpfile.js

var gulp = require('gulp'),
    sass = require('gulp-ruby-sass'),
    autoprefixer = require('gulp-autoprefixer'),
    notify = require('gulp-notify'),
    cache = require('gulp-cache'),
    browserSync = require('browser-sync').create(),
    reload = browserSync.reload;

// processing sass into css - 'gulp styles'
gulp.task('styles', function() {
    return sass('css/*.scss', {
        style: 'compressed'
    })
        .pipe(autoprefixer('last 3 version'))
        .on('error', function (err) { console.log(err.message); })
        .pipe(gulp.dest('css'))
        .pipe(reload({stream: true}));
        /*.pipe(notify({ message: 'Styles task complete' }));*/
});

// listening for changes to scss and images - 'gulp watch'
gulp.task('watch', function() {
    gulp.watch('css/**/*.scss', ['styles']);
});

// live reload via browser-sync - 'gulp serve'
gulp.task('serve', function() {
    browserSync.init({
        browser: "Firefox",
        open: "external",
        proxy: "localhost:8888",
        startPath: "fatfree-master"
    });
    gulp.watch("css/**/*.scss", ['styles']);
    gulp.watch([
        "app/views/**/*.html",
        "**/*.php",
        "**/*.ini"
    ]).on('change', reload);
});

// default tasks enacted by typing 'gulp'
gulp.task('default', function() {
    gulp.start('styles');
});

问题

  • 未正确注入对CSS文件的更改
    • 如果我改变几行,BrowserSync会检测到更改并注入CSS,但这个CSS已经过时了
    • 如果我更改了大部分css文件,BrowserSync会检测到更改并注入CSS(正确的
  • 我尝试过不同的服务器(Nginx),但问题仍然存在
  • 这是一些奇怪的事情
    • 如果我使用内部php服务器( php -s ),注入的CSS是正确的
    • 如果我直接使用Apache而不是通过BrowserSync-Proxy,则CSS是正确的
    • 主机/来宾中的文件已更改,通过nano / editor
    • 进行检查
    • 重新启动BrowserSync不会更改行为,只会重新启动来宾计算机

解决方案吗

请帮帮我。我很想使用BrowserSync但是遇到这些问题,对我来说并不是真正的帮助。

2 个答案:

答案 0 :(得分:0)

我找到了解决方案。 Virtualbox是问题所在,它会在内部缓存一些文件。 Problem described here

答案 1 :(得分:0)

我有完全相同的问题而且根本没有吸气。我安装了Mod PageSpeed Apache插件。它仅缓存用于页面服务的CSS和JS文件。因此,如果您通过SSH或FTP下载文件,它们仍然是实时版本而不是页面缓存版本。禁用Mod PageSpeed解决了我的问题。

apache2/conf/pagespeed.conf
 //turn it off
   ModPagespeed off