te')); return $arr; } /* 遍历用户所有主题 * @param $uid 用户ID * @param int $page 页数 * @param int $pagesize 每页记录条数 * @param bool $desc 排序方式 TRUE降序 FALSE升序 * @param string $key 返回的数组用那一列的值作为 key * @param array $col 查询哪些列 */ function thread_tid_find_by_uid($uid, $page = 1, $pagesize = 1000, $desc = TRUE, $key = 'tid', $col = array()) { if (empty($uid)) return array(); $orderby = TRUE == $desc ? -1 : 1; $arr = thread_tid__find($cond = array('uid' => $uid), array('tid' => $orderby), $page, $pagesize, $key, $col); return $arr; } // 遍历栏目下tid 支持数组 $fid = array(1,2,3) function thread_tid_find_by_fid($fid, $page = 1, $pagesize = 1000, $desc = TRUE) { if (empty($fid)) return array(); $orderby = TRUE == $desc ? -1 : 1; $arr = thread_tid__find($cond = array('fid' => $fid), array('tid' => $orderby), $page, $pagesize, 'tid', array('tid', 'verify_date')); return $arr; } function thread_tid_delete($tid) { if (empty($tid)) return FALSE; $r = thread_tid__delete(array('tid' => $tid)); return $r; } function thread_tid_count() { $n = thread_tid__count(); return $n; } // 统计用户主题数 大数量下严谨使用非主键统计 function thread_uid_count($uid) { $n = thread_tid__count(array('uid' => $uid)); return $n; } // 统计栏目主题数 大数量下严谨使用非主键统计 function thread_fid_count($fid) { $n = thread_tid__count(array('fid' => $fid)); return $n; } ?>javascript - Add random number to .css so it doesn't cache - Stack Overflow
最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - Add random number to .css so it doesn't cache - Stack Overflow

programmeradmin3浏览0评论

I'm trying to get the styles.css to not cache as the server is having issues with the css when it caches.

<script>
var numBAH = Math.floor(Math.random()*100);
</script>

<link href="styles.css+ numBAH +" rel="stylesheet" type="text/css" />

I'm trying to get the styles.css to not cache as the server is having issues with the css when it caches.

<script>
var numBAH = Math.floor(Math.random()*100);
</script>

<link href="styles.css+ numBAH +" rel="stylesheet" type="text/css" />
Share Improve this question edited Oct 4, 2012 at 13:57 Paul Whelan 16.8k12 gold badges52 silver badges85 bronze badges asked Oct 4, 2012 at 13:55 BlynnBlynn 1,4217 gold badges27 silver badges49 bronze badges 9
  • Technically, (+new Date()) would be better than Math.random() as the random number could theoretically repeat. – zzzzBov Commented Oct 4, 2012 at 13:58
  • 1 What do you mean, "the server is having issues"? The whole point of caching is so that you DON'T hit the server. – Blazemonger Commented Oct 4, 2012 at 13:59
  • 2 The server has issues with the CSS? What does that mean? – Pointy Commented Oct 4, 2012 at 13:59
  • 1 "it loads too quickly" ? That's a novel problem. I think you should try to define explicitly a transition because you can't be sure of the network speed. Really I think making the css slower to fetch is a wrong solution. – Denys Séguret Commented Oct 4, 2012 at 14:02
  • 1 "after it caches it loads too quickly rendering the page wrong in the clients eyes", sounds like something else might be happening here. What exactly is the problem the client is seeing when it "loads too fast"? – Giscard Biamby Commented Oct 4, 2012 at 14:06
 |  Show 4 more ments

3 Answers 3

Reset to default 8

You can do this in the head of your document :

<script>
document.write('<link href="styles.css?r='+ Math.floor(Math.random()*100) +'" rel="stylesheet" type="text/css" />');
</script>

BUT :

  • you have great probabilities of finding two times the same number
  • you shouldn't generally avoid caching

Solutions I propose :

1) use (new Date()).getTime() instead of a random number

2) simply change the number when the version changes : styles.css?v=3 (without javascript)

If you have access to a server-side language it would be neater to render the link tag with a query string that is a hash of the entire content of the file. In that way, the cache invalidator ey will change only when the content of the file has actually changed.


After having seen the discussion that has followed, about how you never want to use cache, because it loads too quickly, I want to change my answer. Not to new Date(), but to: fix your page so that loading quickly is a desired result. If you're having specific problems with that, create a question that targets those problems, don't go directly for the lousy workaround.

Cache busting can be work without server-side rendering. I tested recent versions of firefox, chrome and safari in both mobile and desktop, this code worked. (I'm Not sure about IE, though..)

<HEAD>
    <SCRIPT LANGUAGE="JavaScript">
    var numBAH = Math.floor(Math.random()*10000);

    document.write('<LI' + 'NK HREF="./path/to/style.css?cacheBusting='+numBAH+'" rel="stylesheet">');
    </SCRIPT>
</HEAD>
发布评论

评论列表(0)

  1. 暂无评论