最后请看,因为我不断更新最新的调查数据.目前,我需要有关服务器端WireShark日志的帮助.
我遇到ASP.NET MVC Web应用程序的奇怪问题.很少有用户体验过表单超时和挂起,因此点击提交后它只会持续下去并且不会前进到下一页.奇怪的是,这是通过清除浏览器的缓存来解决的.我不明白这两件事是如何相关的.此外,用户报告它发生在FireFox 3+中,但在FireFox 1.5和2.0中不会发生.我和许多用户无法在IE,任何FireFox以及Linux/Windows上重现这一点.
浏览器缓存如何以及为何会影响表单POST处理?
好的,我查看了用户和FireBug.我看到POST请求,并且在长时间超时后失败.服务器不接收请求 - 至少不是基本控制器的OnBeforeExecuting我在哪里进行日志记录,也不在IIS日志文件中.回复是空的.此外,一旦请求花了很长时间但最终执行 - 并且在服务器上我发现执行它只需要很少的时间.
据我所知,这发生在使用jQuery Form插件完成的AJAX请求上.我尝试在参数中设置cache:false,但没有成功.
实际上,我试过没有AJAX,简单提交 - 同样的.我还可以看到jQuery表单插件调用$ .ajax()并返回.我看到它启动了POST请求.但我在IIS日志中没有在服务器上看到此请求,有时甚至在一分钟之后 - 有时它会在FireBug .Net窗格中中止.
有趣的是,清除FireFox缓存/ cookie /表单和发布数据有帮助 - 一次尝试,下一篇文章也会挂起.
此外,请求以GUID的形式发送有关所选组件的信息.未选择组件时,它似乎正常.组件实际上是由JavaScript检查的隐藏复选框(不是在提交时,之前).这是POST数据中的"selected"参数.似乎没有选择任何组件时,它不会挂起,虽然我只试过一次,也许稍后会调查.
有这些额外信息的任何想法?
Request info:
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.2.8) Gecko/20100722 Firefox/3.6.8 ( .NET CLR 3.5.30729; .NET4.0C)
Accept: */*
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
X-Requested-With: XMLHttpRequest
Content-Length: 1288
Pragma: no-cache
Cache-Control: no-cache
Run Code Online (Sandbox Code Playgroud)
发布数据
为了= 842f2988-abff-413C-a092-9dde00a8b9a8&选定= f98c9ad8-49e0-4a9f-9966-9d3d01203aa5_a1d659c0-b8ec-4f91-ba2f-9d3d01203a4c&选定= f98c9ad8-49e0-4a9f-9966-9d3d01203aa5_d6e1984e-227D-4bd0-b8d2-9d3d01203a4d&选定= f98c9ad8- 49e0-4a9f-9966-9d3d01203aa5_0b7cbc1a-35f1-4db8-856b-9d3d01203a4c&选定= f98c9ad8-49e0-4a9f-9966-9d3d01203aa5_0cc7ef9b-085f-4b50-ACDB-9d3d01203a4c&选定= f98c9ad8-49e0-4a9f-9966-9d3d01203aa5_ad273397-ed5d-49bb-b181- 9d3d01203a4c&选定= f98c9ad8-49e0-4a9f-9966-9d3d01203aa5_b5fbf67f-202f中-464B-a9e4-9d3d01203a4c&选定= …
这个页面说明了这个:
如果响应包括Expires头和max-age指令,则max-age指令会覆盖Expires头,即使Expires头更具限制性
似乎mod_expires和mod_headers都在我的服务器中处于活动状态.
哪一个更可取,你能评论每个人的优势吗?
谢谢.
我最近在本教程中读到某些jQuery泄漏可以通过$.cache变量进行跟踪,你应该总是检查它的大小,如果它太大,你做错了.
嗯,有多大太大了?有没有办法检查变量,看看它吃多少内存?
我正在开发一个只通过加载主页来缓存210个对象的网站.太多了吗?我很感激在这里对这个问题进行彻底的解释.
HTTP响应与Cache-Control: no-cachevs有Cache-Control: max-age=0, must-revalidate, proxy-revalidate什么区别?
浏览器会将其视为相同吗?
我正在使用AngularJS框架创建一个应用程序.
问题:
当我将我的应用程序跳出到不同的域或页面然后当我使用历史记录返回按钮返回到我的应用程序时,我只返回JSON.当我跳出我的应用程序浏览历史记录时,同样的情况发生,然后当我使用前进按钮转到我的应用程序时,我再次只获得JSON.后退/前进在我的应用程序中运行良好,只有当我去不同的域时才会发生.
这是为什么?我认为这与缓存一些方法有关,因为当我返回/转发到我的应用程序时,没有请求发送到服务器.
如果你去这个网址,你可以看到我在说什么 - http://test.deving.cz/admin/prihlasit/.然后回去然后前进.
我的设置:
我的应用程序配置为使用HTML5历史记录API.对于启动mydomain.com/admin/的网址,我总是返回包含angular的index.hmtl.然后,对于我的应用程序中的每个其他URL,将发送两个请求.一个用于模板,一个用于数据(JSON).
例:
$routeProvider.when('/admin/page/', {controller: 'PageListCtrl', templateUrl: '/templates/page/list/', resolve: 'PageListCtrl.resolve'})
PageListCtrl:
angular.module('page').controller('PageListCtrl', ['$scope', 'data', function($scope, data) {
$scope.pages = data;
}]);
Run Code Online (Sandbox Code Playgroud)
解决功能:
resolve = {data:
function($http, $q){
var delay = $q.defer();
$http.get().success(function(data){
delay.resolve(data['data']);
});
return delay.promise;
}
}
Run Code Online (Sandbox Code Playgroud)
我应该如何配置角度或我的应用程序告诉浏览器不要缓存数据并始终获取index.html然后让angular执行请求?
我遇到了浏览器缓存干扰我的Laravel应用程序的问题.
如果禁用浏览器缓存,一切正常.但是,如果启用,并且重复单击相同的链接,则甚至不会执行用于创建视图或收集数据的Laravel方法.
其影响是多方面的.例如,编辑资源的表单或显示数据的网格(使用ajax从服务器加载)在重新加载浏览器之前不会显示当前值.
我在我的一些方法中添加了一行记录当前时间戳以证明这一点.
public function index()
{
Log::info( microtime() );
return View::make( $this->templates_root . 'index' );
}
Run Code Online (Sandbox Code Playgroud)
当重复单击链接或再次访问视图时,日志中不会显示任何行.但是如果我重新加载浏览器就会这样.
我该怎么做才能阻止浏览器缓存我的观点?
现在这已经在这里找到了一点点,所以我想我正在寻找一个解释而不是修复(虽然这将是王牌),但Safari的后退/前进缓存是非常贪婪的.
我有一个表单提交的问题,但在转到表单操作页面之前加载一个插页式模式窗口.在Safari上,缓存是如此强大,以至于后退按钮的模态打开仍然让我的灵魂非常难过.
我通过解雇模态然后提交表单来解决它.在后面,浏览器有一个半封闭模式(它的Bootstrap,所以它消失)然后只是继续解雇.
现在我知道onunload =""但刷新页面似乎很疯狂.缓存是一件好事,也是您想要的东西,特别是在手机上.
我想我的问题是:
为什么它比Chrome更强烈,无论如何强迫浏览器缓存状态而不仅仅是最后一个状态?
谢谢
我们正在构建基于Web的可视化,最近我<audio />将服务器上元素的源文件替换为另一个不同大小但名称相同的文件.
当我在Chrome中重新加载页面时,使用了旧的声音.当我'STRG + F5'页面时,仍然使用旧声音.然后我通过导航到音频元素的源URL直接在浏览器中打开mp3文件.即使这样,也使用了旧的声音.我也尝试打开开发工具并禁用缓存 - 仍然相同.
使用Firefox,新声音在强制刷新(Strg-F5)之后使用,这正是我期望看到的行为.顺便说一下,任何服务器端缓存都是完全禁用的.
Chrome在这做什么?并不是声音文件是地球上最重要的东西(它以编程方式用作警告声音),但我现在有点惊慌,因为其他资源也可能"卡在缓存中".有人遇到同样的问题吗?
假设通过在chrome上按shift + ctrl + delete删除了缓存文件.删除以f_*开头的文件,并减少data_*文件data_0,data_1 .... 所以我们不能使用chrome缓存查看器,因为文件不在了.我尝试使用商业和免费取消删除软件(easeus,recuva,puran,activeundelete),他们找到了删除的f_和data_文件但是当我恢复它们并使用nirsoft google chrome cace viewer时,我看到了损坏的结果.在删除操作之前,我需要缓存中的URL和文件.还有其他方法吗?DNS缓存不是一个选项,计算机已被重置.谷歌我的活动将无济于事,因为它只包含访问过的网址(历史记录),但是第一个网址访问了外部网址.
我们有一个包含+50.000活跃用户的页面.有时,当我们更新后端和前端时,我们会看到一小部分似乎加载旧HTML的人会出现JavaScript错误.(它找不到对象X,因为我们从后端的JSON中删除了它).
我们至少在Android和IOS设备上都见过这个,但也可能在桌面浏览器上.
这可能是代码更改后的几天.
我觉得这有关于书签或真正的旧标签的事情.
我不认为我们的用户正在经历一些非常消极的事情(也许这是一个预加载而他们甚至看不到它),但是它会产生很多噪音,隐藏着我们可能遇到的真正问题.
其中一个页面的示例:https://poules.com/en/pools/aaygun96-wk-poule/world-cup-2018/ranking
browser-cache ×10
caching ×4
angularjs ×1
apache ×1
asp.net-mvc ×1
browser ×1
html ×1
html5-audio ×1
http ×1
javascript ×1
jquery ×1
laravel ×1
laravel-4 ×1
memory-leaks ×1
mod-expires ×1
mod-headers ×1
php ×1
rfc2616 ×1
safari ×1
ssl ×1
undelete ×1