GVKun编程网logo

使用Python开发Flask应用时如何自动刷新浏览器?(python自动刷新网页)

17

在本文中,我们将详细介绍使用Python开发Flask应用时如何自动刷新浏览器?的各个方面,并为您提供关于python自动刷新网页的相关解答,同时,我们也将为您带来关于angularjs–使用单页面应

在本文中,我们将详细介绍使用Python开发Flask应用时如何自动刷新浏览器?的各个方面,并为您提供关于python自动刷新网页的相关解答,同时,我们也将为您带来关于angularjs – 使用单页面应用程序(SPA)时如何处理过期文件而不刷新浏览器?、asp.net – 自动刷新浏览器缓存、BrowSync自动刷新浏览器、node.js – 节点:在文件更改时自动刷新浏览器的有用知识。

本文目录一览:

使用Python开发Flask应用时如何自动刷新浏览器?(python自动刷新网页)

使用Python开发Flask应用时如何自动刷新浏览器?(python自动刷新网页)

我已经开始学习Flask来开发Web应用程序。我真正想念的是 任何
代码更改(包括静态文件,模板等)之后,浏览器都会自动刷新。这似乎是几乎所有Javascript框架中的标准功能。前端人员对此有以下几个术语:自动重新加载/刷新,热重新加载/刷新(hotreload),实时重新加载/刷新(livereload),…

J只是想要一个简单的浏览器刷新。

我用谷歌搜索并尝试了几件事-没有运气:

  • https://github.com/lepture/python-livereload
  • https://gist.github.com/amontalenti/8922609

我如何才能在使用Flask时获得平稳的开发体验,而不必每天在浏览器中按F5键1000次才能查看更改结果?

我认为答案python-livereload离上面的链接很近。所以我想我的问题的替代标题可能是:

有人有Flask + python-livereload的有效示例吗?

我很傻,从他们的文档中获取它:)

编辑:为了完整起见,这里是我正在使用的Flask应用程序。

# filename: main.py

from flask import Flask,render_template
from livereload import Server



app = Flask(__name__)

@app.route('/')
def index():
    return "INDEX"

@app.route('/bart')
def use_jinja():
    return render_template('basic.html')



if __name__ == '__main__':
    server = Server(app.wsgi_app)
    server.serve(port=5555)

我以以下方式启动应用

python main.py

angularjs – 使用单页面应用程序(SPA)时如何处理过期文件而不刷新浏览器?

angularjs – 使用单页面应用程序(SPA)时如何处理过期文件而不刷新浏览器?

我已经使用Angularjs完成了一个完整的单页应用程序(SPA)应用程序。

到现在为止还挺好。

任何人都知道,所有的javascript文件都是在第一次访问时加载的。或者,有些文件在需要时以懒模式加载。

到现在为止还挺好…

情况是:服务器更新所有文件(html partials,javascripts,css),客户端仍然有很多文件过时。

这将简单地解决刷新浏览器,点击F5键,控制f5或浏览器中的刷新按钮。但是,在使用SPA时,这个概念不存在。

我不知道如何解决这个问题。

我可以以某种方式检测(做一个ping可能),只是重新加载该特定的文件。使用document.write策略。但是现在又出现了一个问题,我有一个单一的javascript文件,所有的javascript都被缩小了。

我可以尝试在浏览器中强制重新加载,或强制重新登录(并重新加载,因为登录是SPA部分)。

但重新加载是一个难看的解决方案,想像客户端丢失所有数据的形式,因为他是不幸的服务器刚刚更新。更糟的是,我现在必须创建一些“自动保存”功能,因为这样。

我不知道如何处理这个,如果可能的话,以“有角度的方式”做。

我不知道谷歌Gmail如何处理这个,因为我保持登录了很多小时没有登录。

其余的人说一个解决方案可以是版本化你的文件。因此,每当浏览器检查这些文件时,浏览器会注意到文件与服务器中的文件不同,以便浏览器缓存新文件。

我建议使用一些构建工具,如gulp,grunt或webpack,最后一个变得越来越受欢迎。

到目前为止,我使用gulp作为我的项目。我正在移动到webpack

如果您对gulp感兴趣,您可以查看gulp-rev和gulp-rev-replace插件。

他们在做什么?

让我们说我们在你的项目app.js中有下一个文件,将gulp-rev应用到你的项目之后你得到的是像app-4j8888dp.js那样的app.js注入的html文件仍然指向app.js,所以你需要更换它。为此,您可以使用gulp-rev-replace插件。

例如。 gulp任务在哪里

var gulp = require('gulp');
var rev = require('gulp-rev');
var revReplace = require('gulp-rev-replace');
var useref = require('gulp-useref');
var filter = require('gulp-filter');
var uglify = require('gulp-uglify');
var csso = require('gulp-csso');

gulp.task("index",function() {
  var jsFilter = filter("**/*.js",{ restore: true });
  var cssFilter = filter("**/*.css",{ restore: true });
  var indexHtmlFilter = filter(['**/*','!**/index.html'],{ restore: true });

  return gulp.src("src/index.html")
    .pipe(useref())      // Concatenate with gulp-useref
    .pipe(jsFilter)
    .pipe(uglify())             // Minify any javascript sources
    .pipe(jsFilter.restore)
    .pipe(cssFilter)
    .pipe(csso())               // Minify any CSS sources
    .pipe(cssFilter.restore)
    .pipe(indexHtmlFilter)
    .pipe(rev())                // Rename the concatenated files (but not index.html)
    .pipe(indexHtmlFilter.restore)
    .pipe(revReplace())         // Substitute in new filenames
    .pipe(gulp.dest('public'));
});

如果您想了解更多详情,请参阅下面的链接。

https://github.com/sindresorhus/gulp-rev
https://github.com/jamesknelson/gulp-rev-replace

asp.net – 自动刷新浏览器缓存

asp.net – 自动刷新浏览器缓存

如果我听起来无知,这是我从来没有遇到过的事情,所以请原谅我.

我遇到的基本问题是,在Visual Studio 2010中工作时,我所做的任何更改似乎都会被某种缓存所捕获.

例如,我将对页面进行更改,运行解决方案,然后我必须按Ctrl F5强制刷新缓存以查看更改.这是ASP.NET / HTML / CSS& JavaScript代码.一样.

在过去,Visual Studio过去只是在每次运行时清除缓存,所以至少可以说我有点沮丧.

此外,当我将解决方案部署到IIS服务器时,用户也会遇到同样的情况.即使ASP.NET页面上有更改,用户也会继续提升缓存版本,直到清除缓存为止.我通过使用版本号重命名文件(尤其是javascript)来缓解此问题,因此客户端始终将它们视为新文件并加载而不是从缓存加载.

Visual Studio或web.config中是否有可能导致此问题的设置?

编辑:这是我的web.config文件

<configuration>
  <system.web>
    <sessionState cookieless="UseCookies" timeout="1440" mode="StateServer" stateConnectionString="tcpip=127.0.0.1:42424"/>
    <compilation debug="true" targetFramework="4.0">
      <assemblies>
        <add assembly="System.Design,Version=4.0.0.0,Culture=neutral,PublicKeyToken=xxx"/>
        <add assembly="System.Web.Extensions.Design,PublicKeyToken=xxx"/>
        <add assembly="System.Windows.Forms,PublicKeyToken=xxx"/>
      </assemblies>
    </compilation>
    <authentication mode="Windows"/>
    <pages>
      <controls>
        <add tagPrefix="ajaxtoolkit" namespace="AjaxControlToolkit" assembly="AjaxControlToolKit"/>
      </controls>
    </pages>
  </system.web>
  <system.web.extensions>
    <scripting>
      <webServices>
        <jsonSerialization maxJsonLength="50000000"/>
      </webServices>
    </scripting>
  </system.web.extensions>
</configuration>

解决方法

Web资源(Css,Js,Images甚至Html)需要花时间通过网络下载,这会增加加载网页所需的时间(Steve Souders建议它需要近80%,见 here). HTTP缓存允许浏览器或代理保存或缓存这些资源.资源缓存后,浏览器或代理可以引用本地缓存的副本,而不必在后续访问网页时再次下载.

浏览器缓存可由HTTP缓存标头控制(请参阅快速概述here)

所以,这不是因为Visual Studio或asp.net,而是因为浏览器.

希望有很多方法可以在服务器端(仅用于测试目的)或在客户端(重新启动和绕过缓存)禁用缓存.

以下是一些可能性:

使用asp.net

您可以使用此代码显式禁用浏览器缓存

// Stop Caching in IE
Response.Cache.SetCacheability(System.Web.HttpCacheability.NoCache);

// Stop Caching in Firefox
Response.Cache.SetNoStore();

警告:仅在本地进行测试!

此外,许多捆绑系统允许您控制缓存设置.
asp.net mvc Bundles在创建包之后一年设置HTTP Expires Header,并在查询字符串中添加一个additionalnal参数.只要捆绑包没有改变,这个唯一标识符就是相同的.见here.

在浏览器上

有许多快捷方式可以重新加载页面并绕过缓存:
例如:

> Chrome:Shift重新加载按钮
> IE:Ctrl F5或Ctrl Reload Button
> Firefox:Ctrl Shift R或Shift Reload

还有很多方法可以完全禁用浏览器上的缓存.

> IE:工具‣Internet选项‣临时Internet文件‣设置‣检查存储页面的新版本
> Chrome:工具‣开发者工具lower左下角的齿轮图标‣角禁用缓存
> Firefox:工具‣选项‣高级‣网络‣缓存大小= 0

Wikipedia has a great list .

BrowSync自动刷新浏览器

BrowSync自动刷新浏览器

安装browsync

全局安装

npm install -g browser-sync

安装后保存到配置文件

npm install --save browser-sync

如何通过gulp使用broswer-sync

后续补充,暂时不想写了···

如何为browser-sync设置代理

var browserSync = require(''browser-sync'')

browserSync.instance = browserSync.init({
  startPath: ''/'',
  proxy: {
    target: ''localhost:8000''    
},
  browser: browser,
  reloadDelay: 1000,
})

其中reloadDelay为必须项, 设置browserSync重新启动的时间。proxy为代理

node.js – 节点:在文件更改时自动刷新浏览器

node.js – 节点:在文件更改时自动刷新浏览器

我希望我的节点应用程序在文件更改时自动刷新浏览器(无外部应用程序).

我想避免使用webpack dev服务器,因为它不允许我使用我自己的koa服务器,而且通常很麻烦.

如何在文件更改时自动刷新浏览器?

解决方法

尝试使用 watchr:

KOA-app.js:

/.../
var watchr = require('watchr');
watchr.watch({
    paths: [__dirname],listeners: {
        change: function() {
            // Emits an event to all connected clients 
            io.sockets.emit('browserReload');
        }
    }
})

客户side.js:

/.../
  socket.on('browserReload',function () {
     // Reload without using cache
     document.location.reload(true);
  });

关于使用Python开发Flask应用时如何自动刷新浏览器?python自动刷新网页的介绍已经告一段落,感谢您的耐心阅读,如果想了解更多关于angularjs – 使用单页面应用程序(SPA)时如何处理过期文件而不刷新浏览器?、asp.net – 自动刷新浏览器缓存、BrowSync自动刷新浏览器、node.js – 节点:在文件更改时自动刷新浏览器的相关信息,请在本站寻找。

本文标签: