Recently I came across a tricky problem about browser caching. We are working on an SaaS web project and users are identified by login names. Homepage can be viewed after login and is cache by cache directives. So if 2 accounts belong to different tenants log on the same computer without cache clearing, the second user is probably to see the wrong homepage (homepage of another tenant). This problem appears on Firefox and Chrome, but not on IE.
Then I google and found this on stackoverflow:
http://stackoverflow.com/questions/398068/ie-302-redirect-no-cache-header-problem
A quirk of IE is that when you redirect, the no-cache headers are re-added to the redirected request. Hence, in your case, your redirected request also sends the “no-cache” request header carried over from the POST request.
This explains why the problem doesn’t show on IE. The no-cache header will force the server to return the correct homepage, instead of 304 response code indicating using client-side cache.
There are also several differences about caching behavior between IE and Firefox. Check this:
http://blog.httpwatch.com/2008/10/15/two-important-differences-between-firefox-and-ie-caching/
I debug the problem for nearly half of this afternoon. Here’s the description something who encountered the same problem wrote on stackoverflow:
http://stackoverflow.com/questions/811596/why-does-dojo-grid-need-a-name-column-in-the-json-data-source/
In brief, if a json data source without a ‘name’ column is provided to a dojo grid, the grid won’t show the content but a row full with question marks.
So I dig into the source code and found that the grid would perform a query with ‘{name : ‘*’}’ by default. So the most simple workaround is to add an query attribute to the <table> element, making it:
<table query=”{ID:’*'}” …>
BTW, the code lies in ‘dojox/grid/compat/_data/model.js’
作者叫張琮翔,是台湾人,现在MIT读Ph. D,做UI研究。高中时代表台湾参加OI获铜牌。
追求神乎其技的程式設計之道系列:一 二 三 四 五 六 七 八 九
在博客首页的右边增加了twitter sidebar,支持多个twitter widget,功能很不错,可以检测出@和Link。把我们两个的twiiter都给放上去了,呵呵。插件的名称是Twitter for Wordpress,直接在wordpress里安装的。另外一个优点是,这个插件是通过程序去取twitter的信息,由于我的主机在美国,因此可以正常的显示。有些插件比如Twitter Widget因为使用JSONP,国内的浏览者就会被挡在墙外了。
打算啥时增加一个Google Reader Share的Sidebar Widget。Sidebar都快不够用了,很想拆成两个sidebar,像jefferyzhao的那样。
晚上坐沙发上看完了周一买的最新一期《财经》,翻的最后一篇是老谢的”泡沫惊梦“,看后不禁冒冷汗。倒不是被内容吓到,只是早知道老谢是空军司令,但如此看空长期的言论,倒是第一次看到。不难看出随着泡沫越吹越大,老谢的担忧也越来越重。
的确从经济学的角度来看,老谢是对的。长期上所有资产的价格都会回归其原有的价值,但正如其中有个网友评论的是,这个泡沫中央有多大的决心和能力继续维持下去。现在看来,撑到2012年还是很有可能的,并且很有可能支撑得更远。
附带说一句,财经网的网友评论是最接近人类智商水平的,不知是否是人工过滤的原因,至少没有什么谩骂和过于行为艺术的言论。
(author: marshall )
在沪一月,常听到吵架。大部分都是在小区楼上听到上海人和上海人吵,唯一有一次近距离接触却是在上海人和外地人之间的吵架,在同仁医院长宁分院。一开始是两个女人大声的说话,听不清楚是什么回事,后来很清楚的听到一句“阿拉上海宁……”,就知道是上海人和外地人吵架了。
记得在我家里是很少听到街坊邻居吵架的,应该是几乎没有。原因也很简单:第一,我家这栋楼里住的大部分是同一个学校的老师,大家都是同事,或者自己的配偶与对方是同事,不好意思发生正面的冲突;第二,家附近的住宅密度很低,最近的一幢住宅楼大概在100米左右远,这幢楼还是在07年左右才建起来的,之前10年最近的居民楼估计要有个200米以上。住宅密度低,人均占有的资源也高一些,人和人发生冲突的可能性也降低了。
上海市区的人口密度之高是显而易见的。以我在的华阳路片区为例,在华阳路-长宁支路-江苏北路-长宁路围成的大概400米×270米的范围内,集中了50+的居民楼。居民楼大多数是6-7层的老公房,也有2-3层的类似石库门的房子,楼和楼之间的间距左右不到10米,前后10米多一点(2-3层的房子前后左右的间距均不超过3米),人口密度可想而知。户型普遍不大,以两室一厅为主,60-70平左右。如此狭小的居住空间,人均占有资源被大幅压缩,出现一些冲突和争执在所难免。而在拥挤的环境下的生活,使得每个人都会尽量去争取自己的利益,神经也变得更加的敏感,反过来也加剧了资源的竞争。
举一个简单的例子,比如晾衣服。上海居民区里衣服的晾晒都是在窗户外面搭一个面积很大的架子,伸出窗台几乎有3米远,然后把洗好的衣服串在竹竿或者铁杆上,在一起放在外面架子上。除了一楼,每户都这么做,这样可以争取到更多的晾晒阳光和空间,也节省了屋内的空间。但这也很容易因为衣服滴水、被吹下楼而造成邻里矛盾。更有甚者把被子晾到了路边的通讯线路上,由此造成的吵架肯定没少过。
关于上海人吵架的情况也可以推而广之到国民素质上。为什么我们的国民有着不遵守交通规则,随地乱吐痰等不良习惯,这些或多或少都是受到了稀缺资源的影响。日本现在看来国民素质很高,但在1960年东京奥运会时,还有牌子上写着“禁止随地大小便”。可见国民素质和经济的发展、资源的多寡紧密相关。
最近评论