【问题标题】:Disable loading script with timestamp禁用带时间戳的加载脚本
【发布时间】:2012-08-11 08:40:33
【问题描述】:

我想在加载脚本时禁用时间戳,因为它总是在文件 URL 之后的查询字符串中包含时间戳。请看一下图片就知道了。

我还设置了带有选项cache: true 的Ajax。请参阅此处的代码: ``js $.ajax({ 网址:网址 数据: {}, 类型:'发布', 缓存:真, 数据类型:'json', 成功:功能(数据,状态){ //这里有东西 } });

and also I have set meta tag to the header of the HTML.
```html
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="Pragma" content="Public">
<meta http-equiv="Cache-control" content="public">
<meta name="keywords" content="something">
<meta http-equiv="Content-Style-Type" content="text/css">
<meta http-equiv="Content-Script-Type" content="text/javascript">

我正在使用 jQuery v1.7.2

【问题讨论】:

  • 那些是给GET的,但在上面你有POST
  • 所以这意味着我需要用 POST 做所有的 ajax 吗?
  • 但是看第一行,我只是加载了 jQuery。但为什么它有时间戳?
  • jquery 不修改链接。您的 url 变量有缺陷,请确保您没有通过自己的脚本将该助推器附加到它。

标签: php javascript ajax codeigniter


【解决方案1】:

我不确定 jQuery 为什么要尝试加载自己,但这似乎与 $.getScript() 调用有关。

您可以考虑将以下 sn-p 添加到尽可能高的位置:

$.ajaxSetup({
    cache: true
});

cache: true 放入您的$.ajax() 不会以任何方式影响$.getScript(),这就是您在屏幕截图中看到的内容。

【讨论】:

  • 我应该把这个放在哪里? $.ajaxSetup({ cache: true });因为我已经把 cache:true 放在了 ajax 函数中。
  • @Sml004 你应该把它放在 HTML 中的 &lt;script src=".../jquery-1.7.2.js" 之后,在一个单独的 &lt;script&gt; 标记内。
【解决方案2】:

我对codeIgniter的直接了解不多,但是应该和CakePHP中的一样。您应该有一个类似于 config 或包含调试级别的类似文件名。当它设置为调试模式时,它可能会自动为脚本添加时间戳并以不同的方式处理堆栈中的错误

【讨论】:

  • 是的,我将它设置为级别 4,它将记录所有错误。但是当我禁用它(设置为 0)时,我仍然得到时间戳。
  • 应该还有一个变量!我目前正在查看 codeIgniter 代码以尝试找到它。在cake 中有一个名为asset.timestamp 的变量,我可以将其设置为true 或false(也可以将它与调试级别链接起来)。代码点火器中应该有类似的东西!
  • 你使用什么codeIgniter函数来加载脚本?你是用 html 字符串加载它们还是用函数加载它们?
  • 我只是用 html 加载脚本。
  • 好吧,那对不起,我真的不知道!
【解决方案3】:

$.ajaxPrefilter('script', function(options) {
    options.cache = true;
});

// or 

+ function($) {
    $.cachedScript = function(url, options) {
        // Allow user to set any option except for dataType, cache, and url
        options = $.extend(options || {}, {
            dataType: "script",
            cache: true,
            url: url
        });

        // Use $.ajax() since it is more flexible than $.getScript
        // Return the jqXHR object so we can chain callbacks
        return $.ajax(options);
    };
}(jQuery);

// now, you can use $.cachedScript()

你可以去查看文档$.getScript()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-14
    • 2021-12-21
    • 2016-01-14
    • 2020-12-08
    相关资源
    最近更新 更多