Khắc phục sự cố bộ nhớ đệm với Flash, JavaScript, XML, KML hoặc Google Maps
Đây là một bài đăng ngắn và thú vị về các vấn đề bộ nhớ đệm. Các trang web và trình duyệt được xây dựng để thực sự tối ưu hóa tài nguyên. Họ làm điều đó quá tốt đôi khi kết quả cuối cùng thực sự phá vỡ trang web động của bạn thay vì cập nhật nó thường xuyên như bạn muốn. Hôm nay tôi đã làm việc với Trình phát JW, một trình phát Flash Movie kéo danh sách phim qua tệp XML.
Vấn đề là chúng tôi luôn cập nhật tệp với các hội thảo trên web và các lớp đào tạo mới. Nếu khách hàng của chúng tôi tiếp tục truy cập vào trang mỗi ngày, nó sẽ tải một phiên bản danh sách phát được lưu vào bộ nhớ cache và không bao giờ thực sự hiển thị cho họ bản mới nhất và hay nhất.
Kết quả là, tôi đã phải hack Mã đối tượng SWF để nó nghĩ rằng nó đang tải một danh sách phát mới mọi lúc.
var video = new SWFObject('player.swf','mpl','670','280','9'); var playlist = 'playlist.xml't='+Math.round(1000 * Math.random()); video.addParam('allowscriptaccess','always'); video.addParam('allowfullscreen','true'); video.addParam('flashvars','&file='+playlist+'&playlistsize=350&controlbar=over&playlist=right'); video.write('video');
Cách tôi lừa người chơi là đặt một chuỗi truy vấn vào tên danh sách tạo ra một số ngẫu nhiên bằng JavaScript. Bất kể ai truy cập trang, nó sẽ tìm kiếm một tên tệp khác, vì vậy trình phát sẽ lấy danh sách phát mới mỗi lần.
Điều này không chỉ tiện dụng cho JW Player, tôi cũng đã sử dụng kỹ thuật này cho Google Maps khi xử lý các tệp KML thay đổi động. Chỉ cần tạo một chuỗi truy vấn ngẫu nhiên và hệ thống sẽ tải lại tệp KML (khá tĩnh) mỗi khi người dùng truy cập. Đó là một cuộc tấn công, nhưng đó là một cách dễ dàng để biến bộ nhớ đệm về cơ bản off trong các ứng dụng không có tùy chọn này.