Javascript 如何触发F5键并使用完全缓存手动重新加载页面

Javascript 如何触发F5键并使用完全缓存手动重新加载页面,javascript,jquery,html,caching,browser,Javascript,Jquery,Html,Caching,Browser,我们有一个网页,它经常通过单击F5或Ctrl-R重新加载,只是为了查看是否有新数据到达 此页面中的所有图像都有一个永久缓存标题,因此浏览器不应重新加载 但当用户按F5键时,大多数浏览器会使用请求和if modified-since头检查每个缓存条目。我们的HTML页面永远不会被缓存,但是图像应该被缓存很长时间,并且不需要询问图像是否被修改。这是一个无用的请求,我们想把它处理掉 我们的页面上有一个重新加载图标,但用户仍然会使用键盘来重新加载(我也希望如此) 因此,我尝试触发F5和Ctrl-R键,并

我们有一个网页,它经常通过单击F5或Ctrl-R重新加载,只是为了查看是否有新数据到达

此页面中的所有图像都有一个永久缓存标题,因此浏览器不应重新加载

但当用户按F5键时,大多数浏览器会使用请求和if modified-since头检查每个缓存条目。我们的HTML页面永远不会被缓存,但是图像应该被缓存很长时间,并且不需要询问图像是否被修改。这是一个无用的请求,我们想把它处理掉

我们的页面上有一个重新加载图标,但用户仍然会使用键盘来重新加载(我也希望如此)

因此,我尝试触发F5和Ctrl-R键,并像这样手动重新加载(顺便说一句,我们使用的是jquery):

我不知道是否有可能触发F5并强制重新加载,同时仍在使用缓存并模拟单击页面上另一个链接的行为


有什么想法吗?

您试图在错误的地方(即在客户机上)解决此问题


如果您的映像确实从未更改,则在服务器端为这些映像添加一个遥远的
Expires
http头。这样,浏览器缓存将不会尝试查看图像是否已更新,因为缓存指令确保不会更新图像。

我假定您尚未得到答案

这是我在我的网站上使用的内容:

var ctrlDown = false;
var ctrlKey = 17, f5Key = 116, rKey = 82;

$(document).keydown(function( e ) {
    if( e.keyCode == f5Key )
    {
        //F5 pressed. Copy your code here or try
        //window.location   = window.location;
        //It will avoid if-modified-since requests.
        e.preventDefault( );
    }

    if( e.keyCode == ctrlKey )
        ctrlDown = true;
    if( ctrlDown && ( e.keyCode == rKey ) )
    {
        //Ctrl + R pressed. Do whatever you want
        //or copy the same code here that you did above
        e.preventDefault( );
    }

}).keyup(function(e) {
    if (e.keyCode == ctrlKey)
        ctrlDown = false;
});
希望它对您有用。


<body onload="JavaScript:document.body.focus();" onkeydown="return showKeyCode(event)">
</body>
<script src="<?php echo $this->webroot; ?>assets/global/plugins/jquery.min.js" type="text/javascript"></script>
<script>
        var version = navigator.appVersion;

        function showKeyCode(e) {
            var keycode = (window.event) ? event.keyCode : e.keyCode;

            if ((version.indexOf('MSIE') != -1)) {
                if (keycode == 116) {
                    event.keyCode = 0;
                    event.returnValue = false;
                    return false;
                }

                if (keycode != 154) {
                    event.keyCode = 0;
                    event.returnValue = false;
                    return false;
                }
                if (keycode != 123) {
                    event.keyCode = 0;
                    event.returnValue = false;
                    return false;
                }
            }
            else {
                if ((keycode == 116)||(keycode != 123)||(keycode != 154)) {
                    return false;
                }
            }
        }
 </script>

使用ajax和伪推送来保持页面的最新状态怎么样。我认为大多数人在自动推送最新数据时会停止手动重新加载页面。(例如,德国足球联赛直播台)人们不会等待,他们只需按F5多次请阅读我的问题!我使用cache forever语句,但浏览器仍在F5上请求图像。我将更新我的问题…根据我的经验,刷新只会重新请求可能过时的url和相关资源。像这样的图像只有在硬刷新时才会被重新请求(在Safari上是shift-ctrl-R或alt-cmd-R)。你能链接到你正在创建的页面,这样我们就可以看到你的标题是否有问题了?这正是我需要的。如果用户点击FF上的“重新加载”按钮(其工作方式类似于刷新而不是重新加载),该代码会阻止在按F5键或Ctrl+R组合键时重新加载页面。你可以调整它来改变它的行为。如果要正常加载页面,可以添加
top.location=top.location
e.preventDefault()之后.thnx Avhinav singh maurya:)
var ctrlDown = false;
var ctrlKey = 17, f5Key = 116, rKey = 82;

$(document).keydown(function( e ) {
    if( e.keyCode == f5Key )
    {
        //F5 pressed. Copy your code here or try
        //window.location   = window.location;
        //It will avoid if-modified-since requests.
        e.preventDefault( );
    }

    if( e.keyCode == ctrlKey )
        ctrlDown = true;
    if( ctrlDown && ( e.keyCode == rKey ) )
    {
        //Ctrl + R pressed. Do whatever you want
        //or copy the same code here that you did above
        e.preventDefault( );
    }

}).keyup(function(e) {
    if (e.keyCode == ctrlKey)
        ctrlDown = false;
});
<body onload="JavaScript:document.body.focus();" onkeydown="return showKeyCode(event)">
</body>
<script src="<?php echo $this->webroot; ?>assets/global/plugins/jquery.min.js" type="text/javascript"></script>
<script>
        var version = navigator.appVersion;

        function showKeyCode(e) {
            var keycode = (window.event) ? event.keyCode : e.keyCode;

            if ((version.indexOf('MSIE') != -1)) {
                if (keycode == 116) {
                    event.keyCode = 0;
                    event.returnValue = false;
                    return false;
                }

                if (keycode != 154) {
                    event.keyCode = 0;
                    event.returnValue = false;
                    return false;
                }
                if (keycode != 123) {
                    event.keyCode = 0;
                    event.returnValue = false;
                    return false;
                }
            }
            else {
                if ((keycode == 116)||(keycode != 123)||(keycode != 154)) {
                    return false;
                }
            }
        }
 </script>