循环和随机照片生成器 - 不生成随机照片

时间:2014-07-04 02:28:56

标签: browser express browser-cache

我循环浏览用户(使用Express.js)并为他们显示卡片。对于没有个人资料照片的用户,我在http://lorempixel.com/使用随机照片生成器。它每次都会随机拍照:

<% users.forEach(function(user) { %>
        <div class="user">   
          <div class="user-container">     
                <div class="img-container">  

                  <!-- Image User -->
                  <div class="img-user" id="<%= 'img-div' + user.id %>">

                    <% var picture = user.get("profilePictureMedium");
                       if (picture) { %>
                        <img id="<%= 'img-' + user.id %>" src="<%= user.get("profilePictureMedium").url() %>" width="220"                                             
                                       />
                    <%  } else { %>
                        <img id="<%= 'img-' + user.id %>" src="http://lorempixel.com/g/220/220/animals/" width="220"  >
                    <%  } %>
                  <!-- /Image User -->

发生的事情是,为没有个人资料照片的每个用户生成相同的照片。但是,如果我手动将http://lorempixel.com/g/220/220/animals/加载到浏览器窗口中,我每次都会收到不同的照片。

我坚持:

          <img src="http://lorempixel.com/g/220/220/animals/" width="220" />

在循环之外,它在循环中拉出与照片相同的照片,所以我想浏览器正在捕获第一个调用的结果。

有没有办法避免这种缓存,以便每次调用和检索随机照片?

1 个答案:

答案 0 :(得分:4)

一种常见的解决方案是将冗余查询字符串附加到网址。例如:

<img src="http://lorempixel.com/g/220/220/animals/?v=1404442966794" />

这个随机数可以是当前时间戳,或者在这个用例中可能更好,给定用户的id,这样一旦为给定用户获取了图像,仍然可以使用高速缓存。即。

src="http://lorempixel.com/g/220/220/animals/?v=<%= user.id %>"