我正在修改网站的外观(CSS修改)但由于恼人的持久缓存而无法在Chrome上看到结果.我试过Shift+刷新但它不起作用.
如何暂时禁用缓存或以某种方式刷新页面以便我可以看到更改?
browser caching google-chrome browser-cache google-chrome-devtools
Google Chrome浏览器中F5刷新和SHIFT+ 之间的区别是什么F5?
我问的原因是因为有时F5在我的网站上使用时图片无法正确加载,但使用SHIFT+ F5重新加载时.
我正在尝试在我的本地服务器上工作,但如果我想查看css规则的更改,我必须每次都清除缓存.
有没有办法控制谷歌Chrome缓存?
我在javascript和php中实现视频有问题.
的index.php
session_start()
// do other stuff
include ‘video.php’
Run Code Online (Sandbox Code Playgroud)
video.php
<?php
If(!$_REQUEST[‘play’]){
// displaying video.html
}
else
{
// play video
$fp = @fopen($file, 'rb');
$size = filesize($file); // File size
$length = $size; // Content length
$start = 0; // Start byte
$end = $size - 1; // End byte
// Now that we've gotten so far without errors we send the accept range header
/* At the moment we only support single ranges.
* Multiple ranges requires some …Run Code Online (Sandbox Code Playgroud) 我试图在假设本地磁盘缓存为空的情况下测试我的网站的行为.我知道每次都有清除缓存和执行Ctrl-F5等的方法,但是在"网络"选项卡中还有一个"禁用缓存"复选框,似乎应该执行我之后的操作...即禁用缓存.
但是,当我清除缓存时,启用该选项,并且F5重新加载我的网站几次,这就是我所看到的:
尽管已启用"禁用缓存",但资源已缓存,并且正在从缓存中提供服务!那么这个选项实际上做了什么?
编辑
也许我看到的这种行为只与缓存服务工作者脚本有关?如果您加载此页面(从本指南链接到服务工作者的示例),至少对我来说,sw.js即使启用了"禁用缓存",也会从磁盘缓存中获取文件.
google-chrome google-chrome-devtools service-worker progressive-web-apps
所有数据 uri 资源都来自(来自内存缓存)开发工具中的“大小”列下。即使我清除了Chrome 的浏览数据并选中“禁用缓存”,并在私人窗口中运行,它仍然作为内存缓存出现。
如何清除此内存缓存并首次加载新内容。
非常简单,我正在开发一个MVC5应用程序并且已经注意到(最近)我的浏览器似乎正在缓存我在视图中的JavaScript代码@section Scripts { }.
目前我使用Chrome开发,我曾尝试CTRL+F5与CTRL+SHFT+R该重新加载页面,但alert()在JavaScript代码中的注释去掉,我仍然为渲染评论.我也尝试通过隐身模式以及其他浏览器(Firefox,IE)访问我的本地主机并获得相同的行为.这是我的/Home/Index.cshtmlView,它是应用程序启动时加载的默认View.我还尝试在页面中添加一些额外的HTML文本,然后新代码再次生效/显示.
我目前的Chrome版本Version 41.0.2272.118 m是否有人有任何想法可能会发生什么?
更新:
我已经使用Chrome中的开发者工具=>常规设置并进行了检查[X] Disable cache (while DevTools is open),然后重复(使用DevTools仍处于打开状态)尝试CTRL+SHFT+R并且CTRL+F5在我的更改未生效之前使用相同的结果.
更新2:
打开DevTools后,我还按下了"刷新"按钮并尝试了"正常/硬/空缓存和硬重新加载"选项,结果相同.为了简化测试,我在下面添加了一个警报,以便在页面加载时显示(并且当前没有警报出现):
$(document).ready(function () {
alert("Test");
// Other Code/Functions -- No Error showing in Console
});
Run Code Online (Sandbox Code Playgroud) 为了澄清:我不是要尝试区分刷新和重新加载,因此这不是刷新和重新加载的重复.我试图找出是否有办法检测用户何时触发硬重载而不是正常重新加载.我问,因为我想在硬重载之前执行一些代码.
使用JavaScript,通过浏览器的重新加载按钮,或通过Shift+ Ctrl+ 等快捷方式R,可以执行浏览器选项卡的硬重载.是否可以使用JavaScript 检测这样的硬重载?如果是这样的话?
我知道可以检测到事件触发正常重载事件的onbeforeunload时间,我可以找出导航类型来区分刷新和重新加载,但我无法检测到硬重载.
到目前为止,我使用以下JS代码来检测重新加载:
window.addEventListener('beforeunload', function (e) {
// Cancel the event
e.preventDefault();
// Chrome requires returnValue to be set
e.returnValue = '';
// For older browsers
console.log('Is reloading?', event.currentTarget.performance.navigation.type === 1);
// For modern browsers
const perfEntries = performance.getEntriesByType("navigation");
for (let i = 0; i < perfEntries.length; i++) {
console.log('Is reloading? ', perfEntries[i].type === 1); …Run Code Online (Sandbox Code Playgroud) 对于正常/软重新加载,浏览器将重新验证缓存,检查文件是否被修改。
我在 Chrome 上测试过。我有一个网页index.html,它在body. 当点击刷新按钮(软/正常)时,我从网络面板看到的index.html是304 Not Modified,这很好。但是,所有 javascript 文件都加载from memory cache了状态代码 200。没有重新验证!
然后我尝试修改其中一个 javascript 文件。有没有软重载。你猜怎么着?该文件仍然是从内存缓存中加载的!
为什么 Chrome 会这样做?这不会破坏刷新按钮的目的吗?
以下是有关 Chrome 内存缓存的更多信息。
抱歉,我没有这个问题的可重复测试案例,因为我什至从未亲眼看到过。我只知道发生这种情况是因为我的应用程序中有客户端登录以及用户的抱怨。
问题是:
我正在使用服务人员,我希望可以为这种情况不会发生提供一些保证。当新版本包括IndexedDB模式迁移时,这尤其令人不安,因为那时我的应用程序的旧版本甚至无法正常工作。
更多细节:
我正在使用Workbox 4.3.1。我的服务人员基本上是:
importScripts("https://storage.googleapis.com/workbox-cdn/releases/4.3.1/workbox-sw.js");
workbox.precaching.precacheAndRoute([]);
workbox.routing.registerNavigationRoute("/index.html", {
blacklist: [
new RegExp("^/static"),
new RegExp("^/sw.js"),
],
});
Run Code Online (Sandbox Code Playgroud)
workbox.precaching.precacheAndRoute([]);被填充workboxBuild.injectManifest。我可以手动确认是否填写了正确的文件。通常,服务人员可以正常工作。我可以在浏览器开发工具中看到它。我可以断开与Internet的连接,但仍可以使用我的应用程序。一切似乎都很好。就像我在上面说的那样,我从未见过这个问题发生,并且我没有可复制的测试用例。
但是我的一些用户遇到了上述问题。我尝试使用客户端错误日志记录进行调查。我向我的应用程序添加了一些代码,以将其版本号存储在localStorage中,并在初始加载时将其与当前运行的版本号进行比较。如果localStorage中的版本比当前正在运行的版本新(即,它过去成功运行了一个新版本,但现在又回到了较旧的版本),它将记录版本号以及一些其他信息:
let registrations = [];
if (window.navigator.serviceWorker) {
registrations = await window.navigator.serviceWorker.getRegistrations();
}
log({
hasNavigatorServiceWorker:
window.navigator.serviceWorker !== undefined,
registrationsLength: registrations.length,
registrations: registrations.map(r => {
return {
scope: r.scope,
active: r.active
? {
scriptURL: r.active.scriptURL,
state: r.active.state,
}
: null,
installing: r.installing
? {
scriptURL: r.installing.scriptURL,
state: r.installing.state,
}
: null,
waiting: r.waiting
? {
scriptURL: …Run Code Online (Sandbox Code Playgroud) 当我尝试CSS在style.css文件中为按钮或菜单效果编写代码时,它对的实时网站没有任何效果Wordpress。
当在页面源(Inspect Element)中进行更改时,它在本地的效果也很好。
那我该怎么办?
caching ×4
javascript ×4
browser ×3
css ×2
reload ×2
asp.net-mvc ×1
chromium ×1
html ×1
http ×1
http-caching ×1
performance ×1
php ×1
wordpress ×1
workbox ×1