Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/452.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 单页应用程序版本控制_Javascript_Caching_Version_Versioning_Single Page Application - Fatal编程技术网

Javascript 单页应用程序版本控制

Javascript 单页应用程序版本控制,javascript,caching,version,versioning,single-page-application,Javascript,Caching,Version,Versioning,Single Page Application,如果用户正在使用最新版本的my单页应用程序,最好的方法是什么?如何确保用户不必按ctrl+F5键来获取最新的页面资源(JS+CSS)?在所有静态文件的引用前面加上生成器编号 您应该将构建编号指向/js/123/app.js而不是/js/app.js123 在每次部署时,增加生成编号 然后,您需要进行一些重写,以便在路径中存在虚假文件夹时,服务器能够找到app.js 当然,在有人关闭浏览器并再次访问页面或按F5键之前,不会重新加载静态文件 要解决这个问题,您可以使用AJAX请求app.js,并查看

如果用户正在使用最新版本的my单页应用程序,最好的方法是什么?如何确保用户不必按ctrl+F5键来获取最新的页面资源(JS+CSS)

在所有静态文件的引用前面加上生成器编号

您应该将构建编号指向
/js/123/app.js
而不是
/js/app.js
123

在每次部署时,增加生成编号

然后,您需要进行一些重写,以便在路径中存在虚假文件夹时,服务器能够找到
app.js

当然,在有人关闭浏览器并再次访问页面或按F5键之前,不会重新加载静态文件

要解决这个问题,您可以使用AJAX请求
app.js
,并查看它是否已被修改:

$.ajax({
    type:"GET",
    url:'/js/123/app.js',
    cache:true,
    ifModified:true,                  
    success:function(data,textStatus,jqXHR){
        console.debug(data);     // Returns undefined when response is 304 Not Modified
    }
});
以下是我的解决方案:

PHP:

.htaccess:

RewriteRule (.*)/t=[0-9]+$ /$1
这会自动为所有图像、样式和脚本添加一个特定的时间戳:修改时间。然后,
.htaccess
再次将其剥离


这意味着,每当更新其中一个文件时,缓存的版本都会立即失效。经过测试,在所有浏览器中都能完美工作。

在静态内容折叠前加上内部版本号是一个很好的方法。为了确保他们总是在构建之后提取最新版本,您需要将该技术与服务器端标记相结合,该标记将html与静态内容的位置结合起来,并考虑构建编号。当然,如果您使用的是100%角度的范例,那么就不存在服务器端标记这样的东西,因此您需要违反解决方案的纯洁性,并创建一个jsp页面或类似的页面,用户在登录后登录(欢迎页面),然后引用您的静态内容。然后,如果您愿意,您可以在那里结束服务器端代码,并从此开始生活在纯静态布局世界中

RewriteRule (.*)/t=[0-9]+$ /$1