CakePhp 是否将时间戳添加到 ajax 请求的我的 javascript 文件中?
Is CakePhp adding timestamp to my javascript files requested by ajax?
我正在使用 Pjax 获取我的 cakePhp 网站上的页面。由于 javascript 被再次获取,我收到错误消息,因为它认为它是一个新文件,因为 .js?_=timestamp 被添加到它。
main.min.js?_=1425763395728
如果 ajax 正在请求一个页面,cakePhp 会添加这个吗?我想不出它返回时带有时间戳的任何其他原因。
我正在使用 CakePhp 2.5
更新:
问题是 jQuery,这有助于删除时间戳。
$.ajaxPrefilter(function( options, originalOptions, jqXHR ) {
if ( options.dataType == 'script' || originalOptions.dataType == 'script' ) {
options.cache = true;
}
});
我假设您的 Asset.timestamp
配置变量设置为 'force'
或 true
。将此设置为 false
将从您的资产中删除查询字符串时间戳。这在书中有记载:http://book.cakephp.org/2.0/en/development/configuration.html
唯一的缺点是浏览器可能会缓存您的 JavaScript 和 CSS 文件,并且如果您更新它们可能会使用过时的资产。
编辑
因为这对 OP 没有帮助,所以 CakePHP 可能没有添加时间戳。我会查看您正在使用的第 3 方库,特别是在 JavaScript 中,但可能在任何 CakePHP 插件或 PHP 库中,看看它们是否可以添加查询字符串。
结束编辑
尽管 OP post 编辑了解决方案,但最终勾选的答案并未提供解决方案 - 该问题与 CakePHP 中的 Asset.timestamp
无关,而是默认的 jquery ajax 行为,可以通过在调用 ajax 请求之前放置以下代码片段来调整(正如 OP 已经说明的那样):
//Cache Ajax request script files
$.ajaxPrefilter(function( options, originalOptions, jqXHR ) {
if ( options.dataType == 'script' || originalOptions.dataType == 'script' ) {
options.cache = true;
}
});
或
//Cache all Ajax request related files
$.ajaxPrefilter(function( options, originalOptions, jqXHR ) {
options.cache = true;
});
我花了一些时间才弄明白这个问题 post,所以希望这篇文章能帮助其他人更快地找到答案。谢谢基思!
我正在使用 Pjax 获取我的 cakePhp 网站上的页面。由于 javascript 被再次获取,我收到错误消息,因为它认为它是一个新文件,因为 .js?_=timestamp 被添加到它。
main.min.js?_=1425763395728
如果 ajax 正在请求一个页面,cakePhp 会添加这个吗?我想不出它返回时带有时间戳的任何其他原因。
我正在使用 CakePhp 2.5
更新:
问题是 jQuery,这有助于删除时间戳。
$.ajaxPrefilter(function( options, originalOptions, jqXHR ) {
if ( options.dataType == 'script' || originalOptions.dataType == 'script' ) {
options.cache = true;
}
});
我假设您的 Asset.timestamp
配置变量设置为 'force'
或 true
。将此设置为 false
将从您的资产中删除查询字符串时间戳。这在书中有记载:http://book.cakephp.org/2.0/en/development/configuration.html
唯一的缺点是浏览器可能会缓存您的 JavaScript 和 CSS 文件,并且如果您更新它们可能会使用过时的资产。
编辑
因为这对 OP 没有帮助,所以 CakePHP 可能没有添加时间戳。我会查看您正在使用的第 3 方库,特别是在 JavaScript 中,但可能在任何 CakePHP 插件或 PHP 库中,看看它们是否可以添加查询字符串。
结束编辑
尽管 OP post 编辑了解决方案,但最终勾选的答案并未提供解决方案 - 该问题与 CakePHP 中的 Asset.timestamp
无关,而是默认的 jquery ajax 行为,可以通过在调用 ajax 请求之前放置以下代码片段来调整(正如 OP 已经说明的那样):
//Cache Ajax request script files
$.ajaxPrefilter(function( options, originalOptions, jqXHR ) {
if ( options.dataType == 'script' || originalOptions.dataType == 'script' ) {
options.cache = true;
}
});
或
//Cache all Ajax request related files
$.ajaxPrefilter(function( options, originalOptions, jqXHR ) {
options.cache = true;
});
我花了一些时间才弄明白这个问题 post,所以希望这篇文章能帮助其他人更快地找到答案。谢谢基思!