【问题标题】:check browser cache before loading external image在加载外部图像之前检查浏览器缓存
【发布时间】:2013-04-14 06:58:56
【问题描述】:

我想让 javascript 访问 cilent 的缓存以检查他们是否加载了图像,我可以这样做还是会给我相同的来源错误?

没有的网站也会发生什么

ccess-Control-Allow-Origin 设置为全部?

【问题讨论】:

    标签: javascript jquery


    【解决方案1】:

    不确定您要做什么,但大多数浏览器都会为您解决这个问题。

    这意味着在请求完整图像之前,它通常会向服务器发送缓存图像的“最后修改日期”,如果缓存资源没有更改,服务器将回复304 unmodified 状态。

    欲了解更多信息,请查看此链接:

    http://betterexplained.com/articles/how-to-optimize-your-site-with-http-caching/

    1. 浏览器:嘿,给我 logo.png,但前提是它自 2007 年 3 月 16 日以来被修改过。
    2. 服务器:(检查修改日期)
    3. 服务器:嘿,你走运了!自该日期以来,它没有被修改过。您拥有的是最新版本。
    4. 浏览器:太好了!我会向用户展示缓存的版本。

    【讨论】:

    • 是的,我无权访问该服务器,我可以在我的服务器上加载外部图像并查看客户端的响应吗?
    • 如果它在您自己的服务器(同域)上,您应该能够读取 XHR 的标头,请在此处查看 stackoverflow.com/a/4881836/149636
    【解决方案2】:

    你可以使用这个函数(复制自this question)来测试一张图片是否在缓存中。

    function cached(url) {
        var test = document.createElement("img");
        test.src = url;
        return test.complete || test.width+test.height > 0;
    }
    

    事实上,一旦浏览器缓存了图片,你就不需要再从缓存中加载图片了,因为浏览器会为你做所有事情。

    因此,只需插入一个普通的 .让浏览器完成它的工作。

    【讨论】:

    • 看来你已经恢复了原来的功能更短。如果设置了 var,则您已加载它。似乎是最直接的方法,但这不是缓存检索功能。只是一个负载检查/记录功能。没有缓存访问 javascript?
    猜你喜欢
    • 2011-01-27
    • 1970-01-01
    • 2019-09-30
    • 2015-12-07
    • 2013-07-08
    • 1970-01-01
    • 2016-10-06
    • 2014-03-26
    • 2013-03-08
    相关资源
    最近更新 更多