我发送有效格式的HTTP响应"过期"标题(例如"Wed,04 May 2011 09:29:09 GMT"),页面通过https:// [host]:{port} /(与[host]一起发送) localhost)来自J2EE应用程序,使用response.setDateHeader("Expires", {milliseconds a few seconds in the future} ).
在我的页面上,我有一个指向同一页面的链接.当我从Firefox(4)或IE(8)中单击此链接时,页面将从缓存重新加载,直到达到过期时间.通过过期时间后,单击同一链接会导致从服务器加载的页面包含新数据.如果我在上述任一浏览器中点击F5,页面将从服务器重新加载新数据(Firebug显示我Cache-Control: max-age=0随请求一起发送).
使用谷歌浏览器,F5和点击链接都具有相同的效果.始终使用新数据从服务器重新加载页面.
我无法找到任何有关此效果的详细说明.
有没有人知道为什么在我的情况下谷歌Chrome不尊重服务器发送的"过期"标题与页面响应,因此总是从服务器请求数据?
我有一个嵌入flash(flex)应用程序的html页面.
我有以下标题:
<META HTTP-EQUIV="CACHE-CONTROL" CONTENT="NO-CACHE">
<META HTTP-EQUIV="CACHE-CONTROL" CONTENT="NO-STORE">
<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
<META HTTP-EQUIV="Expires" CONTENT="-1">
Run Code Online (Sandbox Code Playgroud)
此外,每次我发布新版本的应用程序时,我都会更改文件名.因此,它变成MyApp_v1.swf,然后更新为MyApp_v2.swf.
尽管如此,chrome仍然会缓存html页面和swf文件.这是一个主要问题,因为客户端不会看到更新的swf,除非他们清除浏览器缓存.
我甚至尝试通过更改htaccess文件来解决这个问题,并重命名托管swf文件的index.html文件:
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*)$ https://www.mysite.com/app[R,L]
DirectoryIndex index.html #this was changed from myapp.html
Run Code Online (Sandbox Code Playgroud)
即使在这样做之后,Chrome仍然会缓存swf,并且仍在从旧的html文件中读取.我在html上做了一个视图源,它仍然显示旧文件.
这在任何其他浏览器中都可以正常工作.
我有以下场景,我想知道什么是处理这个问题的最佳方法.我的Web应用程序(ASP.NET 2.0/IIS 6)生成PDF文件,我有一个结果页面,其中包含指向这些PDF的链接.
现在,我注意到,如果我访问结果页面,单击PDF文件(它将在新窗口中打开),然后重新生成PDF文件,然后单击结果页面中的相同链接,将显示OLD PDF而不是新的.我不得不删除临时的互联网文件,以便查看新的.
因此,由于我不提供实际编写PDF的ASPX(我不希望显示"保存"对话框),而是直接链接到PDF文件,我想知道确保用户始终确保用户的最佳方法看到服务器中的最新文件,而不是缓存版本.
我猜测添加无缓存标头是不可能的.但PDF请求仍然会通过HTTP处理程序,所以我想知道我是否应该创建一个特定的HTTP处理程序来拦截PDF的请求,或者我是否应该在IIS级别执行此操作...但是我不一定希望避免在该网站上缓存所有PDF文件.
有什么建议?在此先感谢您的帮助.
我一直在深入研究Google Page Speed,优化了我正在努力获得的很多网站 - 而且非常成功,我很自豪地说.
我遇到的唯一缺点是,通过一些缓存工作,对JS和CSS的小改动往往不会导致下载文件的新副本.
有什么方法可以对JS,CSS(或其他资源)进行更改以强制下载新副本吗?
如何确保缓存静态内容(图像,css,javascript)?什么是最好的方法?
我有一个在hostgator上运行的应用程序.当我更改js文件时,我的用户在清除缓存之前看不到更改.这是推动我的应用程序更改的唯一选择吗?基本上,我应该进行更改,更新文件,然后请求所有用户清除缓存?
我已经对style.css进行了更改,但wordpress网站仍然显示旧内容.我在FTP中检查了文件,文件中的更改都在那里,但它没有显示在网站上.我没有任何WP缓存插件.我还在浏览器中删除了缓存,并通过Ctrl + F5强制缓存刷新.
:(
我正在尝试在iphone模拟器上测试一个网站,我做了一些javascript更改,我的javascript文件正在从缓存中加载.
我看到旧的版本文件与safari web检查器,资源选项卡(在模拟器窗口上),网络调用也有状态304.我已经在macos Safari上禁用了缓存.我已经尝试在模拟器设置上删除safari缓存.模拟器外部的Safari正在正确加载新文件(我清空/禁用了缓存).
我在Sierra的XCode上使用Simulator(10.0 SimulatorAPP-745.10和iOS 10.3)
如何删除或禁用模拟器缓存?
我的应用在这里加载视频:https://core.arc.io/guanzo/VideoOfPeopleWalking.mp4
它使用Range请求标头以16Kb的块加载来自另一个来源的视频.我的服务器已将响应标头设置Access-Control-Max-Age
为10分钟,以防止出现多余的OPTIONS请求.
访问链接(它是一个HTML页面),打开网络工具,并观察获取16Kb块需要大约1秒.
现在选中"禁用缓存",您应该看到请求更快完成LOT,看起来有更多的并发请求.这与预期行为相反,因为每个请求都必须触发并等待OPTIONS请求.
如果启用了缓存,请求应该更快,不是吗?这里发生了什么?
以下是GIF格式的复制品:https://i.gyazo.com/ec5941829031cdd4dc684a3b53ec6c39.mp4
注意:块存储在IndexedDB中,因此如果刷新页面,则需要清除IndexedDB以强制触发所有请求.
编辑:筛选出任何firestore请求,我不确定为什么这些请求被解雇,但它应该与我的问题无关.
编辑:一个新的线索!https://i.gyazo.com/bd887533a42868f748564ccda4451881.png
选中"禁用缓存"后,Chrome将重复使用"连接ID"列中显示的相同TCP连接.表面上看,这应该可以更快地提出请求.
我试图建立一个站点,以便用户只能访问自己的图像和音频文件。为此,我在URL中使用了变量,例如:
<img src="/public/get_file.php?type=image&file=pic001.png" />
Run Code Online (Sandbox Code Playgroud)
在前端,我正在使用React JS(不确定这对这个问题是否重要)。但是在后端,PHP脚本将验证用户已登录(仅通过检查一个简单的SESSION变量),并在用户的数据目录中查找该文件(基于其SESSION变量中的用户ID)。如果存在,它将使用XSendFile将其返回给用户。
我遇到的问题是,每次用户尝试访问文件时,在加载文件之前都会有一些延迟。这告诉我它们可能没有被浏览器缓存。
为什么文件没有被缓存?它与URL参数有关还是与PHP / XSendFile的使用有关?
如何允许我的文件(图像/音频)被缓存?
更新资料
根据要求,这里是我的get_file.php:
<?php
session_start();
if (empty($_SESSION['auth']['id'])){
exit;
}
require_once("../../api_modules/settings.php");
$developer_id = $_SESSION['auth']['id'];
$type = preg_replace('/[^-a-zA-Z0-9_]/', '', $_GET['type']);
$file = preg_replace('/[^-a-zA-Z0-9_\.]/', '', $_GET['file']);
$file = preg_replace('/[\.]{2,}/', '', $file);
$project_id = preg_replace('/[^0-9]/', '', $_GET['project_id']);
$developer_id = preg_replace('/[^0-9]/', '', $developer_id);
if ($type == "image")
$file = FILEPATH ."files/$developer_id/$project_id/images/thumbs/88x88/$file";
else if ($type == "full_image")
$file = FILEPATH ."files/$developer_id/$project_id/images/originals/$file";
else if ($type == "audio"){
$file = FILEPATH ."files/$developer_id/$project_id/audio/$file";
}
else {
exit;
}
header("X-Sendfile: …Run Code Online (Sandbox Code Playgroud) browser-cache ×10
caching ×5
asp.net ×2
iis ×2
javascript ×2
apache ×1
browser ×1
cors ×1
http ×1
http-headers ×1
iis-6 ×1
ios ×1
java-ee ×1
php ×1
reactjs ×1
safari ×1
stylesheet ×1
webserver ×1
wordpress ×1
x-sendfile ×1
xcode ×1