我创建了一个使用CKEditor javascript丰富的编辑控件的页面。
这是一个非常简洁的控件,特别是因为它是免费的,但我对它允许你添加模板的方式存在严重问题。
要添加模板,您需要修改CKEditor模板文件夹中的模板js文件。描述它的文档页面是here。
这样可以正常工作,直到我想要更新模板或添加新模板(或任何其他需要我修改js文件的模板)。
Internet Explorer缓存js文件,但不会获取更新。清空缓存可以获取更新,但这不是一个可接受的解决方案。每当我更新模板时,我都不想告诉整个组织的所有用户清空他们的IE缓存。必须有更好的方法!
有没有办法阻止IE缓存js文件?或者是否有另一种解决这个问题的方法?
更新
好的,我在CKEditor API中找到this section,允许我使用几个人建议的“将时间戳插入网址”解决方案。
所以脚本现在看起来像这样:
config.templates_files =
[
'/editor_templates/site_default.js?time=' + utcTimeMilliseconds
];
感谢您的帮助。
答案 0 :(得分:2)
您可以将rand种子添加到js文件中。我的意思是<script src='jsFile.js?seed=12345'
每次你想要清空缓存 - 更改种子数
更新
据我所知,你必须这样写config.templates_files = [ '/mytemplates.js?seed=12345' ];
答案 1 :(得分:1)
当您包含.js文件时,Youo可以添加时间戳查询参数。
所以<script type="text/javascript" src="somefile.js"></script>
代替<script type="text/javascript" src="somefile.js?timestampgoeshere"></script>
,{{1}}
这应该使文件总是被重新加载(时间戳需要是动态的,并且每次加载页面都会发生变化.. )
答案 2 :(得分:1)
我担心您将不得不入侵FCKEditor代码并强制客户端JavaScript加载XML文件的新副本。您可以通过将?random=<a random number>
附加到所请求的XML文件的URL来执行此操作。 FCKEditor是opensource,因此您应该能够找到请求XML的行并相应地进行修改。
答案 3 :(得分:0)
.NET / C#:
public static void DisallowBrowserCache( )
{
HttpContext.Current.Response.Cache.SetCacheability(HttpCacheability.NoCache);
HttpContext.Current.Response.Cache.SetAllowResponseInBrowserHistory(false);
}
您可以让ASP.NET将js文件写入输出流(http://server.com/jsFile.aspx,设置http标头),并使用上述方法控制响应的缓存行为。
答案 4 :(得分:0)
相应地设置Expires-Header,例如在Apache
ExpiresActive On
ExpiresByType text/javascript access
这不建议用于真实的Web应用程序,仅适用于Intranet方案,因为这些文件不可缓存。
答案 5 :(得分:0)
每次加载js文件时,将随机数的变量作为变量传递。
src='/libs/js/myfile.js?4859487594573
ajax加载文件的相同技巧。
答案 6 :(得分:0)
多种方法(不需要全部执行):