`
lqixv
  • 浏览: 213081 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

静态HTML页面不缓存js文件的方法

阅读更多

    今天做项目时候遇到一个问题,由于采用了生成静态的CMS系统,但是页面头部需要显示用户登录的信息,也就是,没有登录时,显示登录框,用户登录后,则显示登录信息。于是用到了js调用php文件的方法。但是由于浏览器的缓存,用户登录后常常还是显示登录框,因为js文件被缓存,没有重新下载。

     由于js文件是用<script>标签引入的,无法加随机数参数以使每次都重新下载。经过研究采用以下方法达到目的:

这里是头部的html代码:

<table width="770" border="0" align="center" cellpadding="0" cellspacing="0">
  <tr>
    <td width="377" height="35" align="left" nowrap="nowrap" id="user_status_div">
    <script type="text/javascript">...
    var jsFile = document.createElement("script");
    jsFile.setAttribute("type","text/javascript");
    jsFile.setAttribute("src","/member/user_status_js.php?random="+Math.random());
    document.getElementById('user_status_div').appendChild(jsFile);
    </script>
    </td>
    <td width="393" align="right" nowrap="nowrap"><a href="http://www.nmc.gov.cn/weatherdetail/57494.html" title="点击查看详细天气预报" target="_blank">武汉</a><span style="font-size: 9pt">
    <script src="/weather.php"></script>
    </span><span>&nbsp;<a href="http://www.nmc.gov.cn/weatherdetail/57494.html" title="点击查看详细天气预报" target="_blank">更多</a>&nbsp;&nbsp;<a 
onclick="this.style.behavior='url(#default#homepage)';this.sethomepage('http://www.cnmamia.com');return false;" 
href="http://www.qg.org.cn#">设为首页</a>&nbsp;<a href='#' onClick="javascript:window.external.AddFavorite('{dede:global name="cfg_basehost"/}','{dede:global name="cfg_webname"/}');">收藏本站</a></span></td>
  </tr>
</table>

 

这里是生成调用js的php文件:

<?php
if(!isset($_COOKIE['DedeUserID'])||$_COOKIE['DedeUserID']=='')
{
 ?>
document.getElementById("user_status_div").innerHTML='<form id="form1" name="form1" method="post" action="/member/index_do.php">[<a href="/member/index_do.php?fmdo=user&dopost=regnew">会员注册</a>]&nbsp;用户名<input type="text" name="userid" id="userid" class="user" />&nbsp;密码<input name="pwd" type="password" class="user"  />&nbsp;<input type="submit" name="btnsubmit" id="btnsubmit" value="登录" class="login" /><input type="hidden" name="fmdo" value="login"><input type="hidden" name="dopost" value="login"><input type="hidden" name="gourl" id="gourl" value="'+window.location.href+'"><input name="nochvd" type="hidden" id="nochvd" value="1" /></form>';
 <?php
}
else
{
require_once(dirname(__FILE__)."/config.php");
require_once(dirname(__FILE__)."/../include/config_base.php");

$dsql = new DedeSql(false);
$query="Select userid From #@__member where id=".$_COOKIE['DedeUserID'];
$username = $dsql->GetOne($query);
$dsql->Close();
?>
document.getElementById("user_status_div").innerHTML='欢迎您 <?php echo($username['userid']);?> [<a href="/member/index.php">用户中心</a>] [<a href="/member/index.php?uid=<?php echo($username['userid']);?>">我的空间</a>] [<a href="/member/index_do.php?fmdo=login&dopost=exit&forward='+window.location.href+'">退出登录</a>]';
<?php
}
?>

 

注意这里采用了crateElement方法来动态创建<script>标签,达到了添加随机参数的目的。另外,在调用的js文件中,必须采用innerHTML方法,而不是直接document.write,否则排版可能会不正确。

希望此雕虫小技能给你带来帮助。

 

本文出处:http://blog.csdn.net/lonestone/archive/2007/11/17/1889741.aspx

分享到:
评论

相关推荐

    禁止IIS缓存静态文件的方法(png,js,html等)

    IIS为了提高性能,默认情况下会对静态文件js,html,gif,png等做内部缓存,这个缓存是在服务器iis进程的内存中的。

    DoubleY自动生成HTML全站静态程序 v3.0.rar

    样式文件和模板文件均可后台修改预览(暂无代码高亮编辑功能),不同的栏目模板文件全部全静态分离,可以直接浏览,自由编辑个性化,支持"${ }"标签修改,但是需要您有一定代码基础。 10.纯DIV CSS布局,兼容FF和IE...

    Tomcat无法加载css和js等静态资源文件的解决思路

    Tomcat无法加载css和js等静态资源文件的情况想必从事相关行业的工作人员都有遇到过吧,接下来为大家介绍下详细的解决方法,感兴趣的朋友可以参考下

    DoubleY自动生成HTML全站静态程序 3.0.rar

    3.前台模板完全分离成“完整html文件”,您可以直接运行模板文件看效果,自由定义css标签,直接修改html模板文件,哪怕你每一个不同栏目的页面都采用不同模板,那都是您的自由! 4.“酷站收藏、音乐收藏、站内下载...

    nginx缓存及错误页面配置

    浏览器缓存是为了提高加载速度,因此我们可以通过Nginx对静态文件进行缓存。 location ~ ^/(images|javascript|js|css|flash|media|static)/ { #过期30天 expires 30d; } 定义错误提示页面 error_page 500 502 ...

    starcel:Starcel是静态页面生成器,可帮助您使用ParcelJS转换HTMLCSSJS

    Starcel Starcel是一个静态页面生成器,可帮助您使用转换HTML / CSS / JS。 它不是像或那样成熟的静态站点生成器或CMS。 当您只想构建一个非常简单的静态网站(通常是一页)时,可以使用Starcel 。 您不需要CMS或...

    WordPress缓存插件(WP Super Cache和W3 Total Cache).rar

    W3 Total Cache 是一款集动态页面缓存,CSS\JS压缩,数据库缓存,CDN加速功能于一体的缓存插件。安装上这款插件后,你就可以享受一站式的服务,不需要其他的缓存 插件了,比如 WP Super Cache、DB Cache Reloaded 这样...

    X-BLOG全站生成静态【共享版】v1.0正式版

    支持全站JS调用,也就是说在静态页面中可以通过JS来动态显示数据.3.模板标签化,模板和数据分离,可轻松设计和移植自己喜欢的皮肤,只用替换相应的标签即可.4.全站合理使用缓存,当使用假静态浏览BLOG时,速度更快.5.自带...

    nextjs-cache-purging:通过设置自定义服务器来按需提供Next.js缓存无效的建议

    在页面中使用getStaticProps时,Next.js通过将其预呈现为静态HTML来进行。 对于具有使用getStaticPaths预定义路由器的静态或静态生成的页面(在构建时),具有增量静态生成的页面(在首次请求时)或定义了...

    解决微信浏览器缓存站点入口文件(IIS部署Vue项目)

    Vux 构建,站点部署在IIS8.5上),遇到个非常奇葩的问题,发布站点内容后,通过微信打开网址发现是空白页面(后来验证是微信浏览器缓存了入口文件-index.html,顾之前版本的index页面找不到对应的js,因为我们每次发布...

    netlify-plugin-hashfiles:Netlify构建插件可使用哈希文件名和不可变的缓存头获得最佳的文件缓存

    哈希文件会将您的静态文件移动到单个静态文件目录中,并在其中设置了不可变的缓存头。 所有静态文件都将被重命名以包含其内容的哈希,从而使它们成为内容可寻址的,因此非常适合不可变的缓存。 需要保留其名称的...

    浅谈Webpack 持久化缓存实践

    首先我们需要去解释一下,什么是持久化缓存,在现在前后端分离的应用大行其道的背景下,前端 html,css,js 往往是以一种静态资源文件的形式存在于服务器,通过接口来获取数据来展示动态内容。这就涉及到公司如何去...

    程序天下:JavaScript实例自学手册

    1.1 HTML页面反向显示 1.2 页面自动最大化 1.3 页面自动刷新 1.4 页面的后退、刷新、前进 1.5保护网页源代码 1.6 保护自己的网页不被放入框架 1.7 保护自己的网页不被放入框架 1.8 打印页面的出错原因 1.9 当前网页...

    小糊涂论坛BBSGood2.2(生成html)

    而是缓存和静态文件. BBSGood虽然生成了静态文件的帖子,但这并不太多的去消耗磁盘的空间,平均每个帖子算回帖10个,生成一个文件,大约在10K左右,100M的空间,可以存放1万个主题帖,生成的帖子不再存入数据库,...

    BlogEz v1.2

    更利于搜索引擎收录采用数据缓存技术,在不生成静态文件的情况下也能有效提高页面打开速度在静态页面中利用javascript实现了访问量,评论等数据的实时更新(首页,分类页每一小时系统自动更新一次) 后台支持多附件...

    《程序天下:JavaScript实例自学手册》光盘源码

    1.1 HTML页面反向显示 1.2 页面自动最大化 1.3 页面自动刷新 1.4 页面的后退、刷新、前进 1.5保护网页源代码 1.6 保护自己的网页不被放入框架 1.7 保护自己的网页不被放入框架 1.8 打印页面的出错原因 1.9 当前网页...

    s3-static-website:用于S3静态托管的静态个人博客

    全部内容由css, js, html和图片等组成,全部文件是静态文件,可以直接托管在亚马逊 AWS S3 服务之上,也可以集成 CDN 服务进行内容分发,加速和缓存。 此代码将作为挨踢茶馆云计算的 和课程的实验部分提供。 如果有...

    php网络开发完全手册

    1.4.5 Apache的配置文件httpd.conf与 1.4.5 .htaccess的简介 13 1.4.6 PHP的配置文件php.ini的简介 13 1.4.7 PHP常用参数的配置 14 1.5 几种综合网络服务器系统的安装 14 1.5.1 XAMPP 14 1.5.2 WAMP 16 1.5.3 ...

    网络性能优化实战

    使用浏览器缓存减少对服务器的请求,所有可缓存静态资源(JS、CSS、图像、媒体文件、PDF文件)都应该在服务器端启用浏览器缓存(缓存一切可以缓存的资源)。注:HTML不是静态资源。对于设置了缓存的网络请求我大致画了一...

Global site tag (gtag.js) - Google Analytics